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/

10-13 00:33