i++ 与 ++i

来源:互联网 发布:明动软件 怎么样 编辑:程序博客网 时间:2024/05/16 11:55

很多人可能已经熟练了使用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。

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

原创粉丝点击