꧁有你,不孤꧂ 2022-08-07 00:41 采纳率: 100%
浏览 30
已结题

为什么y值为12 ?括号里值不应该是5和6吗?

img

y=(++x)+(++x)这两个括号里的值怎么算的?

求解答,尽量详细些,刚入坑不太懂。感谢

  • 写回答

2条回答 默认 最新

  • 天际的海浪 2022-08-07 01:32
    关注

    这种代码是不同的编译器执行结果是不同的
    正常的应该是前面(++x)对x增加1,x变成5,并返回5暂时寄存起来.后面(++x)再对x增加1,x变成6,5+6=11
    这样需要用一个额外的内存空间暂时寄存前面返回的5,
    但有的编译器为了优化执行效率,不用额外的内存空间寄存返回的5,而是直接返回x的地址,
    这样前面(++x)对x增加1,x变成5,返回x的地址.后面(++x)再对x增加1,x变成6, 也返回x的地址.
    变成 x地址中的值 + x地址中的值
    之后就是取出x地址中的值 6 进行相加 6+6=12

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月7日
  • 已采纳回答 8月7日
  • 创建了问题 8月7日