A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 廖理 中级黑马   /  2012-5-8 10:52  /  2201 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 廖理 于 2012-5-8 10:54 编辑

int x ;
x= x+1;//1
x+=1;//2
x++;//3
这三种方式都是似的x的值增加1,那种的效率最高呢?为什么?

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

4 个回复

倒序浏览
x=x+1最低,因为它的执行过程如下:

  1. 读取右x的地址;

  2. x+1;

  3. 读取左x的地址;

  4. 将右值传给左边的x(编译器并不认为左右x的地址相同).

  x=+1其次,它的执行过程如下:

  1. 读取右x的地址;

  2. x=1;

  3. 将得到的值传给x(因为x的地址已经读出).

  x++最高,它的执行如下:

  1. 读取右x的地址;

  2. x自增1.

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
这个以前好像在哪看过,是一道面试题来着,在效率方面是第三种最好
第一种,我们得先读出x=x+1;中左边的x的地址,加1后再读出算式中右边的x地址,将右边的值传到左边的x
第二种,我们读出x的地址,然后加1,再返回原来地址就行了
第三种,直接读出x,然后加1就完了

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
理论上说:x++比其它两种效率都高。而x+=1 与 x=x+1 效率差不多。
x++直接在cpu的寄存器中执行。
x+=1把 x 从内存中取出加 1 后再赋给内存中的i变量 x

但是实际应用中可以忽略这种差别了。

评分

参与人数 1技术分 +1 收起 理由
贠(yun)靖 + 1

查看全部评分

回复 使用道具 举报
x++效率最高,最低的是x=x+1;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马