sinmz 2022-08-29 16:46 采纳率: 66.7%
浏览 47
已结题

a++和a--混合使用运算法则

遇到a++和a--混合使用的时候,总是与结果对应不上

int a=2,b;    
b=(++a)+(a--)-(++a)+(a--);
cout<<a<<" "<<b;

img

运算过程我是这样计算的,大家能帮忙看看么
先算++a:b = 3 + (a--)- (++a)+ (a--); a的值为3;
再算a--: b = 3 + 3 - (++a) + (a--); a的值为2;
再算++a: b = 3 + 3 - 3 +(a--); a的值为3;
最后算a--: b = 3 + 3 - 3 + 3 ; a的值最终为2;
b的计算结果最终应该为 6的,怎么输出显示的是 5 ,不太明白。

中途换了好多数据,例如下面程序与截图显示的效果

img

img

img

这个运算过程具体该怎么办呢?

  • 写回答

5条回答 默认 最新

  • 今夕何夕2112 2022-08-29 17:37
    关注

    我这里运行了是2 6,第一种是对的,可能是编译器“优化”出问题了。换个环境应该会正常比如devc++换codeblocks等。
    也可以试试看汇编g++ code.cpp -S -o code.s
    加上 -S 查看汇编,也可以再加上-O2或-O3优化汇编,
    看看这几个汇编文件里是怎么算的
    比如我这里(这是手机的

     行号  汇编语言
       18   mov w8, #2
      19     str w8, [sp, #8]
      20     ldr w8, [sp, #8]
      21     add w8, w8, #1
      22     str w8, [sp, #8]
      23     ldr w9, [sp, #8]
      24     subs    w10, w9, #1
      25     str w10, [sp, #8]
      26     add w8, w8, w9                                                                                     27     ldr w9, [sp, #8]
      28     add w9, w9, #1                                                                                     29     str w9, [sp, #8]
      30     subs    w8, w8, w9
      31     ldr w9, [sp, #8]
      32     subs    w10, w9, #1                                                                                33     str w10, [sp, #8]
      34     add w8, w8, w9                                                                                     35     str w8, [sp, #4]
    

    用到了三个寄存器w8,w9,w10,sp+#4存b,sp+#8存a

    img


    计算完后,把sp+#8和sp+#4依次输出就是a,b了
    2 6

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

报告相同问题?

问题事件

  • 系统已结题 9月7日
  • 已采纳回答 8月30日
  • 创建了问题 8月29日

悬赏问题

  • ¥15 unity2D 关于圆心产生偏移的问题
  • ¥15 计算机微处理器与接口技术相关问题,求解答图片的这个问题,有多少个端口,端口地址和解答问题的方法和思路,不要AI作答
  • ¥15 如何根据一个截图编写对应的HTML代码
  • ¥15 谁能远程帮我装好软件,破解覆盖主程序,启动后左侧选择字典,输入单词,报酬15元,加我微信15218392686
  • ¥15 stm32标准库的PID角度环
  • ¥15 ADS已经下载好了,但是DAS下载不了,一直显示这两种情况,有什么办法吗,非常急!
  • ¥100 Excel 点击发送自动跳转outlook邮件
  • ¥15 gis中用栅格计算器或加权总和后图层不显示,值也明显不对
  • ¥15 python使用python-pptx如何给幻灯片添加只读密码。
  • ¥15 深度神经网络传递自变量损失