#include<stdio.h>
int main()
{
char ch;
for(ch='0';ch<=127;ch++)
printf("%c %d",ch,ch);
return 0;
}
执行时如何变成无限循环。我想知道背后的确切原因?从 int 到 char 来回类型转换的原因是什么?
还有一个小问题
是否要求所有扩展名为.c 的文件都必须有main()
??
最佳答案
在这里,您将 char
与 int
进行比较
for(ch='0';ch<=127;ch++)
char 的 int 值可以在 0 到 255 或 -128 到 127 之间,具体取决于实现。
在您的例子中,char
是一个signed char
,它可以保存-128 到+127 范围内的值。因此,在您的情况下,一旦该值达到 127,它就会溢出并且您得到负值并且循环将永远继续,因为它的值永远不会超过 127。一旦达到 127,在下一次迭代中该值将为 -128,并且循环继续。
你可以使用unsigned char ch;
关于c - 为什么下面的 for 循环不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32043524/