C-基础:表达式中存在有符号类型和无符号类型时,都自动转换为无符号类型
1 void foo(void) 2 3 { 4 5 unsigned int a = 6; 6 7 int b = -20; 8 9 (a+b > 6) puts("> 6") : puts("<= 6"); 10 11 }
答案是输出是“>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。
1 void foo(void) 2 3 { 4 5 unsigned int a = 6; 6 7 int b = -20; 8 9 (a+b > 6) puts("> 6") : puts("<= 6"); 10 11 }
答案是输出是“>6”。原因是当表达式中存在有符号类型和无符号类型时所有的操作数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。