[英]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.