有人能解释一下这个结果吗?请一步步解释清楚。非常感谢。
为什么是-16、-6、-22?编译器如何获得这些值?
代码如下:
int main(void)
{
char i=240, j=250, sum;
sum = i+j;
printf("Result is: %d + %d = %d\n",i,j,sum);
return 0;
}
结果如下:结果为:-16 + -6 = -22
最佳答案
因为Char是8位并且它的容量是255
When you add i+j you put 490 in sum
然后对变量进行求和溢出并生成负数
使用 int
而不是 char
作为 sum 变量它将解决您的问题
阅读https://www.cquestions.com/2011/02/char-overflow-in-c.html了解更多信息
关于c - char 的 %d 值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56608231/