c – 为什么三元运算符中的多个语句未执行
发布时间:2020-12-16 10:44:34 所属栏目:百科 来源:网络整理
导读:参见英文答案 Undefined behavior and sequence points????????????????????????????????????5个 ???????????? What’s the precedence of comma operator inside conditional operator in C++?????????????????????????????????????3个 我对以下内容感到困
参见英文答案 >
Undefined behavior and sequence points????????????????????????????????????5个
>???????????? What’s the precedence of comma operator inside conditional operator in C++?????????????????????????????????????3个 我对以下内容感到困惑: #include <iostream> int main() { bool a = true; int nb = 1; int nb2 = 2; a ? nb++,nb2++ : nb--,nb2--; std::cout << " (nb,nb2) = (" << nb << "," << nb2 << ")"; } 结果: (nb,nb2) = (2,2) 为什么nb2不等于3? 解决方法
因为操作符的优先权.你的表达式评估为
((a) ? (nb++,nb2++) : nb--),nb2--; 运算符,(逗号)是最后要处理的事情.这个例子根本不会编译
|