用turbo C输出32768

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:47:39
void main()
{long a,b;
a=32767;b=a+1;
printf("b is %ld.\n",b);
}
可以得到结果32768
但为什么
void main()
{int a;
long b;
a=32767;b=a+1;
printf("b is %ld.\n",b);
}
却只能输出-32768,不是运算时int型会先转成long型麽

呵呵
不是啊 运算符是有优先级的啊 先做加法的
你定义成unsigned int 型就可以啦

学过汇编吗??
寄存器a=a+1 然后赋值给b 所以。。。。转换时转换了!!是运算完了才转换的,不是运算前就换过来了!!

溢出,符号位变为1