我在解决这些特定案例时遇到了一个问题,无法弄清楚为什么输出结果不同。在示例代码a中,有一个变量promotion,结果是> 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