加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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--;

运算符,(逗号)是最后要处理的事情.这个例子根本不会编译

The expression in the middle of the conditional operator (between ? and

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读