通过尝试,我开始知道有必要在cout语句中将括号放在条件运算符周围.这是一个小例子:
#include <iostream>
int main() {
int a = 5;
float b = (a!=0) ? 42.0f : -42.0f;
// works fine
std::cout << b << std::endl;
// works also fine
std::cout << ( (a != 0) ? 42.0f : -42.0f ) << std::endl;
// does not work fine
std::cout << (a != 0) ? 42.0f : -42.0f;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出是:
42
42
1
Run Code Online (Sandbox Code Playgroud)
为什么这些括号必要?在两种情况下都知道条件运算符的结果类型,不是吗?