这是代码的方式:
for(char c=0;c<256;c++)
printf("hello");
Run Code Online (Sandbox Code Playgroud)
为什么会进入无限循环?
Mys*_*ial 10
这是因为char在你的情况下是一个8位整数.
因此,char只有拥有值-128来127,这始终是小于256.
您的char数据类型可能限制为8位.如果默认char是有符号的,8位且你正在使用twos'complement,它将始终在范围内,-128..127因此总是小于256.
如果它是无符号的 8位(编码无关紧要,因为它只影响有符号数),它将始终在0.255范围内,因此也总是低于256.
请注意,C不强制要求两个补码,因此范围可能会稍微改变,但所有编码的可能性只有8位,它可以具有的最高值255.
只有当你有超过8位可用时才能char达到256.这是可能的,因为C只强制要求最小位数.您可以通过查找来查看您的实现提供的内容CHAR_BITS,<limits.h>但在绝大多数情况下,这将是8.
为了完整起见,三种可能的C编码的八位范围是:
signed unsigned
========= ========
one's complement -127..127 0..255
sign/magnitude -127..127 0..255
two's complement -128..127 0..255
Run Code Online (Sandbox Code Playgroud)