++i和i++的分析

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++则不可以。

posted @ 2020-06-25 23:12  浮尘2333  阅读(125)  评论(0编辑  收藏  举报