今天在学习运算符的时候,发现了一个非常有意思的现象,关于前置++和后置++的不同之处。

前置++是先给变量+1,然后进行使用
后置++是先使用变量,然后进行+1.

首先先给大家看一段代码,看看大家是否能正确得出结论

int i=0;
int j=0;
printf(“%d %d %d”,i++,i++,i++);
printf(“%d %d %d”,++j,++j,++j);

大家觉得答案是什么呢?可以先自己进行运算,下面我们给出结论:

2 , 1, 0 //后置++
3 , 3, 3 //前置++

是不是和大家想的一样呢?理清楚这些,我们首先需要知道参数的传递是由右向左进行传递的。

后置++

我们先来进行讨论后置++的情况,后置++编译器会生成一个临时空间进行存储,最后返回的也是临时空间的值,下面用图来解释一下

前置++

前置++并没有临时空间,所以直接在j上进行++,但不进行赋值,然后最后进行j的赋值。所以我们看到的是3个3

所以我们在使用++时,尽量使用前置++,这样可以避免编辑器生成的临时空间,减少开销,提高运行速度。

【C语言】冷知识——前置++和后置++相关推荐

  1. 攀登Spring珠穆朗玛峰:前置与后置处理器

    文章目录 Spring的前置与后置处理器 前提知识 前置与后置处理器定义 前置处理器:BeanFactoryPostProcessor `postProcessBeanFactory`调用 后置处理器 ...

  2. c语言前置函数,C语言高级编程-函数前置与后置调用

    / linux gcc下测试通过(有Bug请提交) 使用本代码需要注名作者: fqheda 本代码遵循GPL V3.0标准,可免费使用-- 函数前置与后置调用 注解:在同一个.c中,一个函数A调用另一 ...

  3. C++_类和对象_C++运算符重载_递增运算符重载_重载++运算符_前置++_后置++重载---C++语言工作笔记057

    然后我们再来看这个递增运算符的重载. 我们知道,递增运算符,有前置++,和后置++,可以看到,上面写了 然后我们这次就自己定义一个int的类型,MyInteger,然后实现,递增,递减的操作. 首先我 ...

  4. 前置++与后置++的要点分析

    前置++和后置++,都是自增1,但是表达式返回值不同.执行效率上前置++更快. 前置++返回是自增之后的值. 等价于num+=1; rerurn num; 后置++返回的是自增之前的值. 等价于  i ...

  5. [C++再学习系列] 前置++与后置++

    前置++: type operator++(); 后置++: const type operator++(int ); 为了编译器区分前置和后置++,C++规定后缀形式有一个int类型参数,当函数被调 ...

  6. JavaScript运算符:递增递减运算符前置和后置的区别

    从两段代码说起 var num1 = 2; var num2 = 20; var num3 = --num1 + num2; var num4 = num1 + num2; console.log(n ...

  7. # c++运算符重载之 前置++, 后置++, 负号运算符, 类型转换函数, 以及输入输出运算符...

    c++运算符重载之 前置++, 后置++, 负号运算符, 类型转换函数, 以及输入输出运算符 标签(空格分隔): c++ 前言 我在c++学习的过程中, 对这几个不太常见的运算符重载不太会写.出现了很 ...

  8. PHP通过__call实现简单的AOP(主事务后的其他操作)比如前置通知,后置通知

    /*** person class*/ class Person {/*** person class -> function say*/public static function say($ ...

  9. (转)前置++和后置++的区别

    今天在阅读<google c++ 编程风格>的文档的时候,5.10. 前置自增和自减:有一句话引起了我的注意: 对于迭代器和其他模板对象使用前缀形式 (++i) 的自增, 自减运算符.,理 ...

最新文章

  1. wpf计算字符大小占像素_[读书笔记]《计算机科学速成课》——23 屏幕与2D图像显示...
  2. 计算机网络各层代表设备
  3. 【Linux】一步一步学Linux——ipcs命令(141)
  4. backend system available odata service detection
  5. Spring MVC整合Ehcache缓存框架
  6. 用js将form表单同时提交到两个不同页面的方法
  7. leetcode报错runtime error: reference binding to null pointer of type ‘std::vector<std::__cxx11::basic_
  8. 【报告分享】2020年抖音商业产品手册.pdf(附下载链接)
  9. 寒门难再出贵子(6),一篇值得思考的文章
  10. MySQL Innodb Engine -- 文件格式(innodb_file_format)
  11. 查看EXE/DLL文件是32/64位之通用方法
  12. Spring学习04:事务控制(TransactionManager)
  13. GooglePlay上架流程
  14. 精读《Excel JS API》
  15. DIV+CSS中标签dl dt dd常用的用法
  16. 2022长安杯的网站重构及部分题解
  17. 【代码审计】iCMS_v7.0.7 keywords.admincp.php页面存在SQL注入漏洞分析
  18. Windows 挂载nfs
  19. ddk\wdm wdk\wdf
  20. 各种简单滤波的区别整理

热门文章

  1. 光端机连接示意图详细连接方式图解
  2. ad stm8l 热电偶_STM8L之ADC
  3. 看过一个报道湾湾川生态靠着自动售卖机就能很赚一笔
  4. 高通平台开发系列讲解(外设篇)高通平台Camera摄像头驱动移植
  5. python2编码unicode,在不终止Unicode的情况下,在Python 2中编码转义字符的正确方法是什么?...
  6. 2021-11-15 入门前端VScode必装的常用插件, HTML+CSS常用属性速记.
  7. rust 安装与学习所遇到的部分问题
  8. (26)盘古自研框架BackPropagation
  9. 教你如何用思维导图把一本书内容绘制成一张A4纸!
  10. IP地址为140.123.0.0的地址是B类地址,若要切割为10个子网,而且都要连接上Internet,请问子网掩码应设为