gpt4 book ai didi

c++ - C++中的逗号运算符

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:56:48 26 4
gpt4 key购买 nike

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

请解释。

最佳答案

因为 ,lower precedence=。事实上,, 在所有运算符中的优先级最低。

第一种情况:

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。

希望一切都清楚。

而且,正如其中一条评论所建议的那样——

永远不要像这样写代码

关于c++ - C++中的逗号运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7420547/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com