繁体   English   中英

c ++中的逗号运算符

[英]comma operators in c++

int main() {
   int x = 6;
   x = x+2, ++x, x-4, ++x, x+5;
   std::cout << x;
}

// Output: 10

int main() {
   int x = 6;
   x = (x+2, ++x, x-4, ++x, x+5);
   std::cout << x;
}

// Output: 13

请解释。

因为, 优先级低于= 其实,拥有所有运营商的优先级最低。

第一种情况:

x=x+2,++x,x-4,++x,x+5;

这相当于

(x=x+2),(++x),(x-4),(++x),(x+5);

因此, x变为6 + 2 = 8,然后它递增并变为9.下一个表达式是无操作,即计算并丢弃x-4值,然后再次递增,现在x为10,最后,另一个无操作。 x是10

第二种情况:

x=(x+2,++x,x-4,++x,x+5);

这相当于

x=((x+2),(++x),(x-4),(++x),(x+5));

计算x+2 ,然后x递增并变为7,然后计算x - 4 ,然后x再次递增并变为8,最后计算x+5 ,即13。该操作数是最右边的一个,是作为整个逗号表达的结果。 该值分配给x
x是13。

希望很清楚。

而且,正如其中一条评论所暗示的那样 -

永远不要写这样的代码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM