先看一段代码:
#include<iostream>
using namespace std;
int main(){
int a=0;
a=a++;
cout<<a;
return 0;
}
猜猜程序的运行结果?
运行结果:
1.编译警告([-Wall])[Warning] operation on 'a' may be undefined [-Wsequence-point]
2.输出:0
我想,一定会有两派:第一,认为++先于=执行;第二,认为=先于++执行。
至少在我的编译器上,第一派是正确的。因为赋值后执行,把++的影响覆盖过去了。如果有另一种编译器,在处理这个问题时支持第二派,一定要用评论的方式告诉我,这表示编译器的差异。
本文到此结束。
欢迎转载,但请在文章中附加上本文链接:https://blog.csdn.net/weixin_41461277/article/details/84971038 。
2018-12-20:
今天想明白了,在这篇博客中解释了原因。