可能重复:
int c = getchar()?
#include <stdio.h>
main()
{
int c;
c = getchar();
while (c != EOF) {
putchar(c);
c = getchar();
}
}
我没有使用C的经验,但我知道C ++。我想问这里的'c'被声明为整数类型,但令人惊讶的是,当我运行这个程序时,它甚至接受字符。任何人都可以解释一下。
参考:C编程Ritchie / kernighan
答案 0 :(得分:2)
它接受偶数字符
实际上,getchar()
会返回int
,所以这里没问题。
即使它返回char
,因为char
和int
都是相同签名的整数类型,int
宽于char
,{ {1}}总是可以使用隐式转换来存储int
(有时它被称为“向上转换”,但它实际上不是强制转换,因为它是隐式的)。基本上这意味着什么
char
完全有效C.
答案 1 :(得分:1)
首先,getchar
返回int
,而不是char
。
其次,char
在分配时扩展为int
。