我刚开始修改我的数据类型章节。我目前正在研究有符号和无符号字符的概念。我怀疑签名字符的范围是-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/