unsigned char a;
for(a=32;a<128;a=a+1)
printf("%d='%c'\t",a,a);
return(0);
为什么我必须放入未签名的字符?当我将其保留为char时,我执行了程序,它给了我无限循环。当a = 127时不应该停止吗?
最佳答案
char
表示是signed
还是unsigned
取决于实现。这使您的代码实现的行为定义为。
在您的计算机上似乎是signed
。根据C标准,signed char
的最小值和最大值分别为-127
和+127
。大于127
或小于-127
的任何值都不能分配给a
,否则它将调用 undefined 行为。a
达到127
后,它会增加一,并且值变成128
,该值不能由signed char
变量保存,因此该代码调用了 undefined 的行为。
关于c - 在C中显示ASCII字符而无符号字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30819716/