C 为什么这个程序没有给出错误?
可能重复:C 为什么这个程序没有给出错误?,c,kernighan-and-ritchie,C,Kernighan And Ritchie,可能重复: #包括 main() { INTC; c=getchar(); 而(c!=EOF){ 普查尔(c); c=getchar(); } } 我没有C的经验,但我知道C++。我想问一下, C这里是一个整数类型,但是当我运行这个程序时,它甚至会接受字符< /强>。谁能解释一下 参考:C编程Ritchie/kernighan 它接受偶数字符 实际上,getchar()返回int,所以这里没有问题 即使返回char,由于char和int都是具有相同符号的整数类型,int比char更宽,int
#包括
main()
{
INTC;
c=getchar();
而(c!=EOF){
普查尔(c);
c=getchar();
}
}
我没有C的经验,但我知道C++。我想问一下,<强> C这里是一个整数类型,但是当我运行这个程序时,它甚至会接受字符< /强>。谁能解释一下
参考:C编程Ritchie/kernighan 它接受偶数字符 实际上,getchar()
返回int
,所以这里没有问题
即使返回char
,由于char
和int
都是具有相同符号的整数类型,int
比char
更宽,int
始终可以使用隐式转换(有时称为“向上转换”)来存储char
,但它不是真正的演员阵容,因为它是隐式的)。基本上这意味着
int n = 'a';
是完全有效的
它接受偶数字符
实际上,getchar()
返回int
,所以这里没有问题
即使返回char
,由于char
和int
都是具有相同符号的整数类型,int
比char
更宽,int
始终可以使用隐式转换(有时称为“向上转换”)来存储char
,但它不是真正的演员阵容,因为它是隐式的)。基本上这意味着
int n = 'a';
完全有效。首先,
getchar
返回一个int
,而不是char
其次,
char
在赋值时被加宽为int
。首先,getchar
返回int
,而不是char
其次,
char
在赋值时被加宽为int
。在C中,字符类型可以是整数或字符:)当使用char变量
作为整数时,它将在表中打印其字符的普通数字。当使用字符作为字符时,它将打印为“我知道C++”的字符——显然不是,因为这个代码在C++中是相同的。在C中,char类型可以知道为整数或字符:当使用<代码> char变量< /C>作为整数时,它将在表中打印普通字符。当使用字符时,它会打印为“我知道C++”的字符——显然不是,因为这个代码在C++中是一样的。