C++、三元运算符和 cout
C++, ternary operator and cout
此代码无效
int main(){
cout << 5 ? (5 ? 0 : 2) : 5;
system("pause");
return 0;
}
此代码有效
int main(){
cout << (5 ? (5 ? 0 : 2) : 5);
system("pause");
return 0;
}
不明白为什么?
cout << 5 ? (5 ? 0 : 2) : 5;
被解析为
(cout << 5) ? (5 ? 0 : 2) : 5;
这是由于运算符优先级规则。
<<
的优先级高于 ?
,因此您的第一个表达式被解析为:
(cout << 5) ? (5 ? 0 : 2) : 5;
在这种情况下,括号是必要的,以获得您想要的解析。
此代码无效
int main(){
cout << 5 ? (5 ? 0 : 2) : 5;
system("pause");
return 0;
}
此代码有效
int main(){
cout << (5 ? (5 ? 0 : 2) : 5);
system("pause");
return 0;
}
不明白为什么?
cout << 5 ? (5 ? 0 : 2) : 5;
被解析为
(cout << 5) ? (5 ? 0 : 2) : 5;
这是由于运算符优先级规则。
<<
的优先级高于 ?
,因此您的第一个表达式被解析为:
(cout << 5) ? (5 ? 0 : 2) : 5;
在这种情况下,括号是必要的,以获得您想要的解析。