i++ 与 ++i

很多人可能已经熟练了使用i++或++i操作,但很少有人能很清楚的道出两者之间的区别,今天就细说一下:

 

话说++和-- 运算符是C语言中一个很细节的语法,除语法简练外,并没有其他好处。

 

前++是先加再取值,后++是先取值再加。
也就是i=3时,i++和++i的结果都是让i=4,但i++的值是3,而且++i的值是4。

一般来讲,单独使用i++和++i时,并没有多少区别,都等价于 i = i+1;

而 a = ++i,则等价于 i = i+1;a = i;

而 a = i++,则等价于 a = i; i = i++;

 

这么写相信已经明白了i++和++i之间的区别了吧。但是for循环里的表达式用i++ 和 ++i有区别吗?

 

答案是肯定的,从循环次数来说二者完全一样,但是使用i++比使用++i 所需要的辅助空间少,这个可以展开汇编看到,i++由于需要保存之前的值,需要一个辅助存储空间。而++i直接用和覆盖原空间即可详细解释如下:


由于i++的值还是i 的原来的值,所以要先保留原始值,这样理解:

j=i++解释为以下几条语句:
temp=i;
i=i+1;
j=temp;

而j=++i解释为:
i=i+1;
j=i;

如果只是简单类型没什么,但如果是类的话,temp的创造可是大代价的。这就是为什么很多人喜欢在循环中使用++i。

但在循环中,我们不关心其值,只关心其结果,所以是一样的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值