c语言里面的增值有什么作用,C语言不同增值语句区别

i++;

++i;

i +=1;

i =i +1;

在C语言代码中我们经常看到这样的增值语句,那么到底哪个语句效率最高呢?

‘i++’表示取i的地址,把他装入寄存器当中然后增加内存中i的值。

'++i'表示增加i的内容把它的值放入寄存器中。

i +=1,i=i+1都是赋值操作。在早期编译器当中其被翻译成两条指令,因此大家会认为这样的效率底下。

但在现代编译器中gcc,vc等区别已然不存在,就是说以上几条语句代码速度 是一样的,因为编译器在为这几条语句生成中间代码时都进行了优化。

下面我们来看一下他们的汇编代码:

#include

int main(int argc, const char * argv[])

{

int i=0;

//i++//

i++;

//++i//

++i;

/i+=1/

i+=1;

/i=i+1/

i=i+1;

return 0;

}

上面增值语句LLVM编译器生成的汇编代码是:

Ltmp5:

movl$0, -20(%rbp)

.loc1 15 5

movl-20(%rbp), %edi

addl$1, %edi

movl%edi, -20(%rbp)

.loc1 17 5

movl-20(%rbp), %edi

addl$1, %edi

movl%edi, -20(%rbp)

.loc1 19 5

movl-20(%rbp), %edi

addl$1, %edi

movl%edi, -20(%rbp)

.loc1 21 5

movl-20(%rbp), %edi

addl$1, %edi

movl%edi, -20(%rbp)

.loc1 22 5

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值