有人可以解释这个结果吗?请分步清楚地说明。非常感谢。
为什么是-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
答案 0 :(得分:0)
char i=240
溢出。 char
= 8位。签名后,范围为-128至127。
因此,这会将其转换为负数。
建议:仔细阅读编译器的警告。
答案 1 :(得分:0)
因为字符为8位,并且其容量为255
添加i + j时,您将490总计
然后求和变量溢出并生成负数
使用int
代替char
求和变量,它将解决您的问题
阅读https://www.cquestions.com/2011/02/char-overflow-in-c.html了解更多信息