std :: numeric_limits <int> :: has_infinity +条件三元运算符

时间:2016-04-01 02:34:09

标签: c++ c++11 c++14

我只是在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括号的位置

在第一种情况下,三元运算符没有任何意义。当我将大括号移到末尾时,只发现三元运算符(?:)有意义。

有关此行为原因的任何输入?

1 个答案:

答案 0 :(得分:10)

它是precedence of the << operator。你的第一个表达式相当于:

(cout << "Min = " << (std::numeric_limits::has_infinity)) ? "TRUE" : "FALSE";