c++中关于++的特殊情况

c++中关于++的特殊情况

int x = 4;
x+=x-=x–;
cout << x;

输出的结果是-1

int x = 4;
x+=x-=–x;
cout << x;

输出的结果是0

为什么呢?
在第一个x+=x-=x–;运算中,–符号运算的优先次序先,不过它是从左到右运算的,不知道为何,在我的编译器里,是运算完所有的项后再进行自减1的过程。去掉–后,表达式变为x+=x-=x;这个表达式中,+=、-=都是同级的,并且是从右往左运算,容易看出其结果x = 0,再加上前面–的自减1,所以输出的结果是-1。

而x+=x-=–x;中,–x是首先进行运算的,所以其结果是x=3,然后表达式变为x+=x-=x,无论当前x为何值,最后x的结果都是0,所以输出的结果自然是0了。

Leave a Reply

Your email address will not be published. Required fields are marked *