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

San*_*Man 0 c++ c++11 c++14

我只是在std :: numeric_limits上尝试了几件事.并观察了一些有趣的行为.

cout << "Min = " << (std::numeric_limits<int>::has_infinity) ? "TRUE" : "FALSE";
Run Code Online (Sandbox Code Playgroud)

输出 0

cout << "Min = " << (std::numeric_limits<int>::has_infinity ? "TRUE" : "FALSE");
Run Code Online (Sandbox Code Playgroud)

输出 FALSE

请注意开始和结束()括号的位置std::numeric_limits

在第一种情况下,三元运算符没有任何意义.当我将支架移动到末端时,只有三元运算符(?:)被发现有意义.

有关此行为的任何输入?

Sam*_*hik 10

它是<<运算符优先级.你的第一个表达式相当于:

(cout << "Min = " << (std::numeric_limits::has_infinity)) ? "TRUE" : "FALSE";
Run Code Online (Sandbox Code Playgroud)