c - 输出困惑

扫码查看

我刚开始修改我的数据类型章节。我目前正在研究有符号和无符号字符的概念。我怀疑签名字符的范围是-128到127,那么为什么下面的代码还在运行?另外,下面的代码给出的是我无法理解的无限o/p。

main( )
{
char ch ;
for ( ch = 0 ; ch <= 255 ; ch++ )
printf ( "\n%d %c", ch, ch ) ;
}

我目前正在使用GCC 32位编译器。有人能帮我解释一下上面代码的o/p吗?

最佳答案

for ( ch = 0 ; ch <= 255 ; ch++ )

如果ch是有符号字符,它将从0开始并递增到127。然后,在下一个增量处,它将“环绕”并变成-128。使用无符号char
127 = 0x7F
128 = 0x80

但是,使用有符号的字符,0x80变成-128。
所以现在ch将从-128运行到127。由于所有这些值都小于255,这将重复,直到您停止程序。。

关于c - 输出困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17257743/

10-13 06:39
查看更多