【发布时间】:2020-02-20 11:24:02
【问题描述】:
#include <stdio.h>
int main(void)
{
char a, b;
int c;
b = 2;
a = 127;
c = a + b;
printf("%d", c);
}
我认为 c 的值应该是 -127,但实际上当我运行这个测试时,值是 129。
根据<<c pragramming:a morden approach>>的例子,
long int i;
int j=1000;
i=j*j; /*overflow may occur,correct writing is i=(long)i*i;
这里是书上的解释——当两个int类型的值相乘时,结果应该也是int,但是j * j的结果太大了不一致,在有些机器上不能用int表示,导致溢出。
所以我认为在我的测试中,(a+b) 的类型是 char,因为129>127..char 不能表达129,这会导致溢出。
我很困惑
【问题讨论】:
-
"(a+b) 的类型是 char" 你为什么这么认为?
标签: c