首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-02-07 
一个数据类型的自动转换问题执行下面代码,会输出 6-14,unsignedinta6intb-20(a+b6)?puts( 6 ):p

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

热点排行