我只是在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
括号的位置
在第一种情况下,三元运算符没有任何意义。当我将大括号移到末尾时,只发现三元运算符(?:
)有意义。
有关此行为原因的任何输入?
答案 0 :(得分:10)
它是precedence of the << operator。你的第一个表达式相当于:
(cout << "Min = " << (std::numeric_limits::has_infinity)) ? "TRUE" : "FALSE";