关于前置自增与后置自增的区别我是参考这里:http://bbs.bccn.net/thread-454977-1-1.html

简单复述下,比如++x; 与 x++;

在C中,++x这个表达式的值为原先x的值+1,副作用是x的值增加了1;(C++中不是这样定义的,不管它)
 在C中,x++这个表达式的值为原先x的值,副作用是x的值增加了1。
即记住几个词 表达式、表达式求值、副作用

C++ primer:自增运算符必须作用于左值对象,前置版本将对象本身作为左值返回,后置版本则将对象原始值的副本作为右值返回。

建议:除非必须,否则不用递增递减运算符的后置版本(需要将原始值存储下来,增加了额外工作量)。

一道笔试中做过的题(涉及变量的静态存储):

void f(int i)
{
static int v=i++;
cout<<v<<endl;
v=++i;
cout<<v<<endl;
} f(1);
f(0);

运行后输出:

1

3

3

1

执行f(1)时,i 后置自增变为2,v 是静态变量,初始化为1。然后 i 前置自增变为3,v 被赋值为3;

执行f(0)时,由于v是静态变量,所以不再执行初始化操作,而直接执行后续语句,即输出v,此时v=3。然后 i 前置自增变为1,v 被赋值为1。

C++之前置自增与后置自增的更多相关文章

  1. C和C++区别——前置自增与后置自增

    一.先看下面两段完全一样的代码块 /* test.cpp */ int main() { int a = 5; ++a = 7; printf("%d\n", a); return ...

  2. c++重在运算符前置自增和后置自增

    class student { int age; }; int main() { class student stu; (stu++)++;//error ++(stu++);//error stu+ ...

  3. C: printf参数执行顺序与前置后置自增自减的影响

    起源: 今天在了解副作用side-effect的过程中,看到了下面的网页,把我带到了由printf引起的一系列问题,纠结了一整天,勉强弄懂. 第一个代码没什么好解释的.而第二个printf(" ...

  4. HTML5 选择前置摄像头,选择后置摄像头

    最近发现我写的都是乱七八糟的,觉得应该给大家带点福利,于是写了这篇 背景:最近想做个web应用,需要用到摄像头,但是发现默认一直是前置摄像头,拍照很麻烦,于是找了很多文章,居然没有人提到,只好FQ去找 ...

  5. c++ 前置++与后置++的区别

    用C++编程的都知道,C++提供了一个非常强大的操作符重载机制,利用操作符重载,我们可以为我们自定义的类增加更多非常有用的功能.不过,C++也有限制,就是当我们为自定义的类重载操作符时,重载操作符的含 ...

  6. C++之运算符重载(前置++和后置++)

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

  7. C++中前置操作符和后置操作符的重载

    1,C 语言中讨论了原生含义,C++ 中有必要考虑前置.后置操作符能够重载,有何问题: 2,值得思考的问题: 1,下面的代码有没有区别?为什么? 1,i++  // i 的值作为返回值,i 自增 1: ...

  8. android Camera 如何判断当前使用的摄像头是前置还是后置

    现在 android 平台的智能手机一般都标配有两颗摄像头.在 Camera 中都存在摄像头切换的功能. 并且有一些功能前后置摄像头上会有所不同.譬如人脸检测,人脸识别,自动对焦,闪光灯等功能, 如果 ...

  9. pytest_前置后置

    今天总结下pytest,pytest简直就是python自动化中的高富帅,各种操作,哈哈 这次总结主要涉及到了以下几点: 1.unittest中的setUp.tearDown.setUpClass.t ...

随机推荐

  1. C# JS 前后端互传数据

    ---恢复内容开始--- 后端: public void ProcessRequest(HttpContext context) { context.Response.ContentType = &q ...

  2. datatbales 使用笔记

    实例: var datatable_obj = null; $(document).ready(function(){ datatable_obj = $('#merchant-list').Data ...

  3. Python 进阶_闭包 & 装饰器

    目录 目录 闭包 函数的实质和属性 闭包有什么好处 小结 装饰器 更加深入的看看装饰器的执行过程 带参数的装饰器 装饰器的叠加 小结 装饰器能解决什么问题 小结 闭包 Closure: 如果内层函数引 ...

  4. SAS中的Order By - Proc Sort

    SAS中的Order By - Proc Sort 1.排序proc sort proc sort在按数据集中某一个变量或几个变量的升序或降序将记录重新排列,并把结果保存在输出数据集中,如果不另外指定 ...

  5. OpenCV2.4.8 + CUDA7.5 + VS2013 配置

    配置过程主要参考:https://initialneil.wordpress.com/2014/09/25/opencv-2-4-9-cuda-6-5-visual-studio-2013/ 1.为什 ...

  6. linux shell assemble PDF文件

      daniel@daniel-mint ~/latex/linux/itext/daniel $ cat asm.sh header_start=0 header_len=15 xref_start ...

  7. Java并发AtomicReference类

    java.util.concurrent.atomic.AtomicReference类提供了可以原子读取和写入的底层对象引用的操作,还包含高级原子操作. AtomicReference支持对底层对象 ...

  8. Ubuntu添加与删除PPA源

    目录 PPA,英文全称为 Personal Package Archives,即个人软件包档案.是 Ubuntu Launchpad 网站提供的一项源服务,允许个人用户上传软件源代码,通过 Launc ...

  9. hdu 5435 A serious math problem

    A serious math problem Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Oth ...

  10. shell 脚本学习(一)

    一.vi编辑器的常用指令 1.命令行模式 x   #删除一个字符 dd #删除一整行 2.插入模式 i #在光标前插入内容 o   #在当前行之下新开一行 3.底行模式 x 或者 wq  #保存退出 ...