i++和++i的运行分析
今天在刷leetcode的三数之和时,写错i++与++i。一直只能搜索到一个解,遂百度,发现一个有趣的问题。
int a=0;
int a=a++;
cout<<a;
结果不是1,而是0!!!。看到一篇博客(链接忘了)阐明的原理,大概如下:
i++
type tmp=i;
i=i+1;
return tmp;
++i
i=i+1;
return i;
还有一个就是运算符的优先级顺序,因为++的优先级大于=,所以上面的a=a++实际上可以分为两步
- a++,这时候a=1,等号右边值为0
- a=右边,这时候第二次赋值,a重新变0
还有一个要注意的是,++i因为返回的是i本身,所以可以作为左值,i++则不可以。