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

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