自加操作符

c里面的++前后关系非常容易搞混,下面通过一段汇编代码 看看是怎么回事

    88:         i =1;

00411550  mov         dword ptr [i],1

    89:         j = i++;

00411557  mov         eax,dword ptr [i]

0041155A  mov         dword ptr [j],eax

0041155D  mov         ecx,dword ptr [i]

00411560  add         ecx,1

00411563  mov         dword ptr [i],ecx

 

 

    90:         i = 1;

00411566  mov         dword ptr [i],1

    91:         j = ++i;

0041156D  mov         eax,dword ptr [i]

00411570  add         eax,1

00411573  mov         dword ptr [i],eax

00411576  mov         ecx,dword ptr [i]

00411579  mov         dword ptr [j],ecx

 

后++符号是等表达式结束以后才会进行++操作,而前++符号是先进行自加操作,然后进行表达式操作

 

00411550  mov         dword ptr [i],1
    89:  j = i + i++;
00411557  mov         eax,dword ptr [i]
0041155A  add         eax,dword ptr [i]
0041155D  mov         dword ptr [j],eax
00411560  mov         ecx,dword ptr [i]
00411563  add         ecx,1
00411566  mov         dword ptr [i],ecx

 

004115BC  mov         dword ptr [i],1
    92:  j = i + ++i ;
004115C3  mov         eax,dword ptr [i]
004115C6  add         eax,1
004115C9  mov         dword ptr [i],eax
004115CC  mov         ecx,dword ptr [i]
004115CF  add         ecx,dword ptr [i]
004115D2  mov         dword ptr [j],ecx

 

这个例子也说了前后自加的对比,运算表达式也是自右向左进行的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值