ASCII值大于127

#include <stdio.h> 
  
int main() { 
    char c = 125; 
  
    c = c + 10; 
  
    printf("%d", c); 
  
    return 0; 
}

这段代码的输出是-121

这个输出如何-121?你能解释一下吗?

如果我添加100而不是10withc那么输出是-31. 为什么?

回答

在 C 语言中,该char类型是一个整数类型,能够表示语言本身所需的所有字符。该标准没有指定它是有符号类型还是无符号类型。看到输出后,我可以猜测您的系统使用大小为 8 位(7 个值位和一个符号位)的有符号字符并以 2 补码表示负值。

所以(作为 int)125 + 10 = 135。135 > 128 所以实际值是 135 - 256 = -121。

(在二补模式下,数字刚好被包裹在 2**SIZE_IN_BITS...)


以上是ASCII值大于127的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>