char的%d值是多少?

时间:2019-06-15 07:16:02

标签: c

有人可以解释这个结果吗?请分步清楚地说明。非常感谢。

为什么是-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

2 个答案:

答案 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了解更多信息