我无法弄清楚为什么在每种特定情况下输出都不同。在示例代码 a 中,正如我所料,有一个变量提升,结果是> 6
,但在示例代码 b 中,结果是<= 6
:
/* **Code a** */
puts("Code a\n");
unsigned int a = 6;
int b = -20;
( a+b > 6) ? puts("> 6\n") : puts("<= 6\n");
/* **Code b** */
puts("Code b:\n");
uint8_t a1 = 6;
int8_t b1 = -20;
( a1+b1 > 6) ? puts("> 6\n") : puts("<= 6\n");
输出:
Code a
> 6
Code b:
<= 6