使用 i++ vs. ++i

i++是先赋值再加1

++i是先加1再赋值

到目前为止,你已经学习了如何编写下面这样的 C++ for 循环:

for (int i = 0; i < 10; i++) {}

这条语法同 Python 的 for 循环语法十分相似;然而,你也可以这样编写 for 循环:

for (int i = 0; i < 10; ++i) {}

这两者之间有什么区别?为什么它们都可以运行?

事实上,i++ 和 ++i 都会带来同样的结果;这些都是 i=i+1 的缩写形式,它们之间的区别也十分微妙。

int i = 5;
int x = i++; // x = 5, i = 6 (called postfix)
int x = ++i; // x = 6, i = 6 (called prefix)

在两种情况中,i 变量都增加了 1。在后缀式 i++ 的情况中,先计算了int x = i,再出现了 i=i+1。

而在前缀式 ++i 的情况中,i = i + 1 先出现,再执行了 int x = i。

相比 i++,许多代码指南更推荐使用 ++i。在实际操作中,当使用整数变量时,两者的效率相同。

然而,当你编写一个重载 ++ 运算符的 C++ 类时,这两者之间又有一些差别。在 Python 矩阵项目中你见过了操作重载,其中代码重载了数学符号来进行矩阵加法、减法、乘法,等等。

重载后缀式运算符时,C++ 需要记录两个值。在例子中,记录的值是 5 和 6。而对于前缀式运算符而言,C++ 只需要记录一个值:6。因此,当重载 ++ 运算符时,使用前缀式运算符比后缀式更加高效。

 

最新文章

  1. 如何注册微信小程序
  2. tp框架之模板继承
  3. PHP 小数点保留两位
  4. apache+tomcat整合后的编码问题
  5. 【Unity】12.5 Navmesh Obstacle组件
  6. java--字符串替换replace,replaceAll,replaceFirst
  7. office2010官方下载 免费完整版.zip
  8. 正则匹配 去掉 多余的js和html标签
  9. 关于使用json 字符串转换为字典问题
  10. 关于网页强制被跳转到wpkg.org的解决
  11. (转载)AS3中的mouseEnabled与mouseChildren
  12. POJ 3669 广度优先搜索
  13. Button和ImageButton
  14. hdu 4779 Tower Defense 2013杭州现场赛
  15. jdk阅读xml文件
  16. 【原创】构建高性能ASP.NET站点 开篇
  17. bzoj2243[SDOI2011]染色 树链剖分+线段树
  18. Java异常处理-----Throwable类
  19. Masonry 与 frame 混用导致的问题
  20. 树状数组 || JZOI 1024. @szefany 的树

热门文章

  1. Python:构建可执行exe文件
  2. JZ-050-数组中重复的数字
  3. PHP动态修改配置文件
  4. MacBook苹果电脑绕过BootCamp安装Win7双系统
  5. 学习HashMap源码
  6. 逆置单链表(基于c语言)
  7. 使用Spring Data ElasticSearch+Jsoup操作集群数据存储
  8. Ubuntu20.04服务器+Anaconda上创建Python3.6虚拟环境并
  9. web服务器-Nginx下载限速
  10. Linux安全加固手册