C语言算术运算隐式转换有关问题
C语言算术运算隐式转换问题!C/C++ code#include stdio.hint main(){unsigned int achar dunsigned int
C语言算术运算隐式转换问题!
C/C++ code#include <stdio.h>int main(){ unsigned int a; char d; unsigned int c; d = -20; a = 250; c = a+d; printf("%d",c); getchar(); }
以上是测试代码,DEVCPP输出为230.
问题:
测试输出结果与本人理解的转换规则不符合。
PS:
http://www.hookcn.org/2011/01/implicit-conversions-of-usual.html
链接为网上找的转换规则,但是如果按照转换规则,那么
1、进行整型提升,char d——>int d
2、unsigned int 的类型>= int,所以int会转换成unsigned int。那么计算的结果应该不是230.
大家帮忙看看吧!谢了
[解决办法]但是你打印的时候用的%d打印的。。。所以又转换成了int
[解决办法]的确是先进行整型提升,假定32位系统,那么d=0xfffffec
0x00000fa+0xfffffec,溢出后=0xe6没错啊
[解决办法]