一个数据类型的自动转换有关问题
一个数据类型的自动转换问题
执行下面代码,会输出
> 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型 变正常了
执行下面代码,会输出
> 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型 变正常了