读书人

C语言算术运算隐式转换有关问题

发布时间: 2012-03-02 14:40:28 作者: rapoo

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没错啊

[解决办法]
探讨

但是你打印的时候用的%d打印的。。。所以又转换成了int

读书人网 >C语言

热点推荐