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
请解释。
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 = 3,14;
的代码。嘿嘿。 - Cheers and hth. - Alfint x = 5; x+2;
x+2 是一个空操作,它并不会执行任何操作。另一方面,x+=2
不是一个空操作,因为它会改变 x 的值。 - Armen Tsirunyan