꧁有你,不孤꧂ 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日

悬赏问题

  • ¥15 单片机学习顺序问题!!
  • ¥15 ikuai客户端多拨vpn,重启总是有个别重拨不上
  • ¥20 关于#anlogic#sdram#的问题,如何解决?(关键词-performance)
  • ¥15 相敏解调 matlab
  • ¥15 求lingo代码和思路
  • ¥15 公交车和无人机协同运输
  • ¥15 stm32代码移植没反应
  • ¥15 matlab基于pde算法图像修复,为什么只能对示例图像有效
  • ¥100 连续两帧图像高速减法
  • ¥15 如何绘制动力学系统的相图