sta*_*ant 3 c++ ternary-operator
我对以下内容感到困惑:
#include <iostream>
int main()
{
bool a = true;
int nb = 1;
int nb2 = 2;
a ? nb++, nb2++ : nb--, nb2--;
std::cout << " (nb,nb2) = (" << nb << "," << nb2 << ")";
}
Run Code Online (Sandbox Code Playgroud)
结果:
(nb,nb2) = (2,2)
Run Code Online (Sandbox Code Playgroud)
为什么nb2不等于3?
Dmi*_*lov 11
因为运营商的优先权.你的表达式评估为
((a) ? (nb++, nb2++) : nb--), nb2--;
Run Code Online (Sandbox Code Playgroud)
Operator ,(comma)是最后要处理的东西.这个例子根本不会编译
条件运算符中间的表达式(在?和:)之间的表达式被解析为括号.
有关详细信息,请参阅C++ Operator Precedence.
| 归档时间: |
|
| 查看次数: |
960 次 |
| 最近记录: |