int main()
{
char a = 'P';
char b = 0x80;
printf("a>b %s\n",a>b ? "true":"false");
return 0;
}
为什么它的计算结果为真?
最佳答案
在您的系统上,char
已签名。它也是八位,因此 0x80
溢出了带符号的 8 位整数可以表示的内容。结果值为 -128。由于 P
是某个正值,因此它大于 -128。
C 允许对 char
类型进行签名或未签名。这是一个特殊的(烦人的)属性,不同于其他整数类型,例如 int
。通常建议使用 unsigned char
显式声明字符类型,以便行为更加确定而不是依赖于实现。
关于Char数据类型算术表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18663494/