有人能向我解释一下如何
printf("%d", -2<2u?1:-1);
打印出“-1”。我认为这里发生了某种隐式转换,但我似乎无法理解。
有人能向我解释一下如何
printf("%d", -2<2u?1:-1);
打印出“-1”。我认为这里发生了某种隐式转换,但我似乎无法理解。
-2
被转换为 unsigned integer
。这将等于 UINT_MAX - 1
,而它肯定大于 2
。因此,条件失败并打印出 -1
。
u
在这里是将 -2 和 2 都转换为 无符号整数
吗? - Nebeskiunsigned int
是一种隐式转换,正如标题中所提到的那样。你不能直接比较有符号和无符号的量,因此一个量会被转换为另一个量。 - unwind
if( (-2 < 2u ? 1u : -1) > 0) { printf("-1 > 0"); }
会输出-1 > 0
:) - Lundin?:
运算符。 - Lundin