被忽视的整型提升:
变量的数据类型的符号位提升
表达式中字符与短整型首先要转换为普通整型,然后再执行加法运算,加法运算之后结果将被截断,然后再存储。
int main ()
{
char a, b, c;
a = 10;
//00001010
b = 127;
//01111111
c = a + b;//开始整型提升
//00000000 00000000 00000000 00001010(有符号,符号位为0)
//00000000 00000000 00000000 01111111(有符号,符号位为0)
//00000000 00000000 00000000 10001001
//10001001(截取后存储)
printf("%d\n", c);//此处%d输出,此处又要整型提升。
//11111111 11111111 11111111 10001001 补码(整型提升:有符号,符号位为1)
//10000000 00000000 00000000 01110111 原码
//-119
}