我只是在 std::numeric_limits 上做了一些尝试。并观察到一些有趣的行为。
cout << "Min = " << (std::numeric_limits<int>::has_infinity) ? "TRUE" : "FALSE";
输出0
cout << "Min = " << (std::numeric_limits<int>::has_infinity ? "TRUE" : "FALSE");
输出FALSE
请注意 std::numeric_limits
开始和结束 ()
大括号的位置
在第一种情况下,三元运算符没有任何意义。当我将大括号移到末尾时,只有三元运算符 (?:
) 被发现是有意义的。
关于为什么会出现这种行为的任何意见?
最佳答案
这是precedence of the << operator .您的第一个表达式等效于:
(cout << "Min = " << (std::numeric_limits::has_infinity)) ? "TRUE" : "FALSE";
关于c++ - std::numeric_limits<int>::has_infinity + 条件三元运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36347062/