文档章节

C++自增操作符你真的懂?

龍禳
 龍禳
发布于 2014/06/05 22:10
字数 421
阅读 96
收藏 0

  虽然使用C++已经长达五年之久,但是对于C++的这个++却实在是一知半解。说来惭愧。 相信所有学过C++的人都知道++C于C++在运算符产生的效果上的异同。那么当一个表达式或者一个语句中出现两次同样的++会是什么样的表现呢?
  例如int a=2; int b=(a++)*(a++)等于多少呢? 是4还是6还是8?


  最简洁快速的办法就是写代码,让编译器告诉我们答案。于是构造了这么一段代码:

int _tmain(int argc, _TCHAR* argv[])
{
    int a,b;

    a = 2; b = 3;
    int a1 = (a++)*(a++);

    a = 2; b = 3;
    int a2 = (++b)*(++b);

    a = 2; b = 3;
    int b1 = a++<<a++;

    a = 2; b = 3;
    int b2 = ++a<<++a;

    a = 2; b = 3;
    int c1 = (a++*b++,a++*b++);

    a = 2; b = 3;
    int c2 = (++a*++b,++a*++b);

    a = 2; b = 3;
    int d1 = (a++,++b)<<(a++,++b);

    a = 2; b = 3;
    int d2 = (a++,b++)<<(++a,++b);

    a = 2; b = 3;
    int d3 = (a++,b++)<<(++b,++a);

    a = 2; b = 3;
    int d4 = (b++,a++)<<(++a,++b);    

    printf("\na1:%d",a1);
    printf("\na2:%d",a2);
    printf("\nb1:%d",b1);
    printf("\nb2:%d",b2);
    printf("\nc1:%d",c1);
    printf("\nc2:%d",c2);
    printf("\nd1:%d",d1);
    printf("\nd2:%d",d2);
    printf("\nd3:%d",d3);
    printf("\nd4:%d",d4);

    return 0;
}

- 阅读剩余部分 -

© 著作权归作者所有

共有 人打赏支持
龍禳
粉丝 2
博文 13
码字总数 14283
作品 0
深圳
程序员
Error list iterator not incrementable

Container Traverse for(iterator it = begin(); it != end(); ++it) for(iterator it = begin(); it != end(); it++) 两种方式iterator遍历的次数是相同的,但在STL中效率不同,前++--返回引......

nao
2014/04/11
0
0
C++基础教程之C/C++区别

C/C++基础教程之C/C++区别 这是C++教程得第一步,后续会持续更新哦!欢迎新手(具有C基础),老鸟可绕道,可指导。 C++标准输入和输出 C++标准输入和输出分别是cin和cout,用法非常简单 cin>>n...

这个人很懒什么都没留下
09/01
0
0
Nim如何与C/C++/Objc互动

header pragma(头文件指示): Compile pragma(编译指示): 直接让nim文件使用c/c++代码文件, 编译的时候会先编译.c文件成.o然后链接让nim也能使用其内容. --- Link pragma(连接指示): 直接链接...

路中鸟
2015/07/20
0
0
没有吃够苦头的C++程序员称不上了解C++

转自http://news.csdn.net/a/20100330/217658.html 近日,国外技术博客lbrady.com 发表了一篇非常有意思的博文。文章认为C++语言庞大而复杂,只有那些在c++开发之旅上吃过许多苦头的程序员才...

张明
2010/04/01
0
3
浅谈MFC内存泄露检测及内存越界访问保护机制

本文所有代码均在VC2008下编译、调试。如果您使用的编译器不同,结果可能会有差别,但本文讲述的原理对于大部分编译器应该是相似的。对于本文的标题,实在不知道用什么表示更恰当,因为本文不...

songchang
2012/09/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Java 并发编程原理

为什么要使用多线程? 通过多线程提高吞吐量 伸缩性比较好,可以增加 CPU 核心来提高程序性能 什么场景下使用多线程? 如:tomcat BIO Java 如何实现多线程? Thread、Runnable、ExecutorSer...

aelchao
21分钟前
1
0
谨慎的覆盖clone方法

说在前面 有些专家级程序员干脆从来不去覆盖clone方法,也从来不去调用它,除非拷贝数组。 其他方式 可以提供一个构造函数或者工厂去实现clone功能。 相比于clone,它们有如下优势: 不依赖于...

XuePeng77
21分钟前
0
0
什么是最适合云数据库的架构设计?

分布式数据库技术发展多年,但是在应用、业务的驱动下,分布式数据库的架构一直在不断发展和演进。 开源金融级分布式数据库SequoiaDB,经过6年的研发,坚持从零开始打造数据库核心引擎。在技...

巨杉数据库
30分钟前
0
0
源码模仿之RPC

源码模仿之RPC RPC - 远程过程调用,概念不多赘述,可自行百度。 场景 统一api接口 生产者(提供远程接口调用方) 使用者(主动调用远程接口) 代码实现 API接口(公共依赖包) DemoEntity (...

GMarshal
31分钟前
0
0
Linux之安装Tomcat8

最近要在Linux上安装Tomcat,记录下 1.进入tomcat8的安装目录 List-1 root@iZwz9bjiawhqzfsklyht4rZ bin]# pwd/opt/app/tomcat8/bin[root@iZwz9bjiawhqzfsklyht4rZ bin]# ll总用量 83......

克虏伯
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部