有符号类型为什么只在比较时转换为无符号类型?
unsigned int a = 6;
int b = -20;
printf( "%s\n", (a+b) > 6 ? ">6" : "=<6" );
printf( "%d\n", (a+b) );
在VC6.0上测试,输出为
>6
-14
----------------------------------------------
资料上说,当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。但是为什么第二个输出没有转换呢?是不是只在条件表达式中才自动转换?