想用一句话搞定交换:
int a = 2, b = 5; cout << "a = " << a << ", b = " << b << endl; a = (a + b) - (b = a); cout << "a = " << a << ", b = " << b << endl;
然而输出:
a = 2, b = 5 a = 2, b = 2
这明显是先运算了b=a,然后才a+b,再整体做减法,带上了小括号也是不行的。
但是用其他的编译器又是可以的,应该不是C++语言的问题,是VS编译器的问题。