2019.9.3记录

在这里插入图片描述记得以前看过哪个运算符是从右到左运算,查了所有运算符都是从左到右。
后++是取了该值之后立马就自加一个,而不是运行完整个表达式才自加
(++i)=(i++)*(++i)的执行顺序为
1、对赋值号左边操作,i要先自加1,i==4
2、对赋值号右边进行操作,左乘数等于i,为4。然后i自加1 ,i=5,
3、再取i之前对i自加,i=6,把6给右乘数。
4、乘法4 * 6=24 ,赋值给i

上述代码的汇编:

 0x0000000000401530 <+0>:	push   %rbp
   0x0000000000401531 <+1>:	mov    %rsp,%rbp
   0x0000000000401534 <+4>:	sub    $0x30,%rsp
   0x0000000000401538 <+8>:	callq  0x40e770 <__main>
   0x000000000040153d <+13>:	movl   $0x3,-0x4(%rbp)
   0x0000000000401544 <+20>:	addl   $0x1,-0x4(%rbp)//先对赋值左边进行了自加
   0x0000000000401548 <+24>:	mov    -0x4(%rbp),%eax
   0x000000000040154b <+27>:	lea    0x1(%rax),%edx
   0x000000000040154e <+30>:	mov    %edx,-0x4(%rbp)
   0x0000000000401551 <+33>:	addl   $0x1,-0x4(%rbp)
   0x0000000000401555 <+37>:	mov    -0x4(%rbp),%edx
   0x0000000000401558 <+40>:	imul   %edx,%eax
   0x000000000040155b <+43>:	mov    %eax,-0x4(%rbp)
=> 0x000000000040155e <+46>:	mov    -0x4(%rbp),%eax
   0x0000000000401561 <+49>:	mov    %eax,%edx
   0x0000000000401563 <+51>:	mov    0x8b126(%rip),%rcx        # 0x48c690 <.refptr._ZSt4cout>
   0x000000000040156a <+58>:	callq  0x44d530 <_ZNSolsEi>
   0x000000000040156f <+63>:	mov    0x8b12a(%rip),%rdx        # 0x48c6a0 <.refptr._ZSt4endlIcSt11char_traitsIcEERSt13basic_ostreamIT_T0_ES6_>
   0x0000000000401576 <+70>:	mov    %rax,%rcx
   0x0000000000401579 <+73>:	callq  0x44d330 <_ZNSolsEPFRSoS_E>
   0x000000000040157e <+78>:	lea    0x86a7c(%rip),%rcx        # 0x488001 <_ZStL19piecewise_construct+1>
   0x0000000000401585 <+85>:	callq  0x419bc8 <system>
   0x000000000040158a <+90>:	mov    $0x0,%eax
   0x000000000040158f <+95>:	add    $0x30,%rsp
   0x0000000000401593 <+99>:	pop    %rbp
   0x0000000000401594 <+100>:	retq   

指针大小问题
32位上是4字节,64位上是8字节

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值