您的位置:首页 > 其它

i++与++i的区别

2015-12-13 17:47 411 查看

众所周知的区别

i++和++i的区别应该是众所周知的,每一本c语言和c++的入门教程都会提及:

对于i++,编译器会先取得i的值进行计算,然后再进行加1操作

而对于++i,编译器会先进行加1操作,然后拿着加1之后的值进行计算

本质区别

参与运算的情况

源代码

int i = 9;
int a = i++;
int b = ++i;


汇编

movl    $9, -20(%rbp)

movl    -20(%rbp), %edi
movl    %edi, %ecx
addl    $1, %ecx
movl    %ecx, -20(%rbp)
movl    %edi, -24(%rbp)

movl    -20(%rbp), %ecx
addl    $1, %ecx
movl    %ecx, -20(%rbp)
movl    %ecx, -28(%rbp)


有上面的汇编可知,当++i和i++参与运算时,i++需要先保存一下加1之前的值,所以比++i多执行了一条指令。可以说,对于上面的代码++i效率更高一些。

没有参与运算的情况

源代码

int i = 9;
i++;
++i;


汇编

movl    $9, -20(%rbp)

movl    -20(%rbp), %edi
addl    $1, %edi
movl    %edi, -20(%rbp)

movl    -20(%rbp), %edi
addl    $1, %edi
movl    %edi, -20(%rbp)


通过上面的汇编可以看出,在当++i或i++不涉及到运算时,他们的指令是一样的,因此运算的效率是相同的
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: