读书人

一个数据类型的自动转换有关问题

发布时间: 2012-02-07 17:45:36 作者: rapoo

一个数据类型的自动转换问题
执行下面代码,会输出
> 6
-14,

unsigned int a = 6;
int b = -20;
(a+b > 6)?puts( "> 6 "):puts( " <6 ");
printf( "%d ",(a+b));

a+b会进行数据类型会自动转换,但printf( "%d ",(a+b))又为什么是-14呢,
请大家帮我分析下原因,谢谢!


[解决办法]
是这样的
unsigned 和signed 进行运算会进行类型提升到unsigned

打印%d是 转化为 signed int型 变正常了

读书人网 >C语言

热点推荐