并不是等于函数,而是等于函数调用的结果
就像数学上说的 令 y = sin(π) 不是说让变量 y 成为一个函数,而是让 y 等于 sin(π) 这个计算的结果。不过 C 语言这样的“过程式”编程语言和数学上有一点不一样,就是对同一个函数的两次一模一样的调用可以得到不同的结果,例如 getchar(); getchar(); 这样两次调用的结果可能是不一样的
getchar() 的返回值类型确实是 int ,返回值的取值有两种可能,一种是 把读到的字符提升成 int 类型 然后返回(因为 int 的取值范围一定是 char 的取值范围的超集,所以不会有数据丢失),另一种是如果读取的时候发生错误,返回的是 EOF,这个宏展开成一个“和任何字符都不相等”的 int 值,用来表示错误,它不一定能用 char 表示。
也就是说,这里人为给 int 加上了“比 char 多一个表示‘不是字符’的值的数据类型”的含义
代码中这种直接把 getchar() 的返回值赋给 char 类型就是放弃检查 读取时有没有发生错误,算是偷懒的做法或者是比较坏的做法吧
首先类型 char < short < long ,int由系统决定是short还是long,他们之间是可以相互转换的。
char型指是ascii码表对应的字符,如,'A'的ascii码是65,
你可以
char A = 'A';
char A = 65;
int A = 'A';
不管是int还是char,在内存中都是二进制。只要他们二进制相同,就是相等的。
int和char是可以混用的,学会用printf %c %d来测试他们吧,这样你就能加深印象
------------------------
”定义一个字符后,这个字符为什么能等于一个函数啊?“
这个一点也不奇怪
这个不是等于一个函数,而是等于其返回值。
例如:
int a = 10;
int b = fun(); //假设fun()返回一个10的函数
都是可以
getchar是函数,
getchar()是函数调用。
就像高中学的y=f(x),y是等于f(x)计算出来的值
x是形参,你具体传入一个值,如0,就可以算出来具体的值
另外等于函数,其实说的是函数指针,暂时你用不上,就先不介绍了
函数是有返回值的,你自己写个带返回值的函数也可以。
getchar返回的值可以说是ASCII码,字符都是有一个ASCII值的。