int main() {
int x = 6;
x = x+2, ++x, x-4, ++x, x+5;
std::cout << x;
}
// Output: 10int main() {
int x = 6;
x = (x+2, ++x, x-4, ++x, x+5);
std::cout << x;
}
// Output: 13请解释一下。
发布于 2011-09-14 17:37:02
因为,有低优先级而不是=。事实上,,是所有运算符中优先级最低的。
第一例:
x=x+2,++x,x-4,++x,x+5;这相当于
(x=x+2),(++x),(x-4),(++x),(x+5);所以,x变成6+2 = 8,然后递增,变成9。下一个表达式是now,即计算和丢弃x-4值,然后再增加,现在x是10,最后是另一个now。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.
希望一切都清楚。
而且,正如其中一条评论所暗示的-
永远不要写这样的代码
https://stackoverflow.com/questions/7420547
复制相似问题