此代码无效
int main(){
cout << 5 ? (5 ? 0 : 2) : 5;
system("pause");
return 0;
}
此代码有效
int main(){
cout << (5 ? (5 ? 0 : 2) : 5);
system("pause");
return 0;
}
无法理解为什么?
答案 0 :(得分:6)
cout << 5 ? (5 ? 0 : 2) : 5;
被解析为
(cout << 5) ? (5 ? 0 : 2) : 5;
答案 1 :(得分:1)
这是由运营商优先规则引起的。
<<
的优先级高于?
,因此您的第一个表达式被解析为:
(cout << 5) ? (5 ? 0 : 2) : 5;
在这种情况下,必须使用括号来获取所需的解析。