Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/59.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么这个程序没有给出错误?_C_Kernighan And Ritchie - Fatal编程技术网

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++中是一样的。