KLXdreamer 2022-10-05 18:58 采纳率: 90%
浏览 39
已结题

对一个运算结果的疑惑

int i=3;
int a=0;
a=(++i)+(++i)+(++i);
printf("%d",a);

输出a的结果为什么是16 而不是15

  • 写回答

3条回答 默认 最新

  • X-道至简 2022-10-05 20:43
    关注

    跟踪了一下这个
    a=(++i)+(++i)+(++i); 改写成 a = a1 + a2 + a3
    过程应该是这样:
    先计算 a= a1 + a2, 这个时候是计算两次 ++是5, 也就是 a1=a2=5,算的10
    在计算 a= 10 + a3, 这个时候是计算1次 ++是6, 原来是5, 所以是 a = 10 + 6 =16

    编译器貌似是取了两个操作数就开始计算, 这个有点意思

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

报告相同问题?

问题事件

  • 系统已结题 10月14日
  • 已采纳回答 10月6日
  • 创建了问题 10月5日

悬赏问题

  • ¥15 同一个网口一个电脑连接有网,另一个电脑连接没网
  • ¥15 神经网络模型一直不能上GPU
  • ¥15 苍穹外卖拦截器token为null
  • ¥15 pyqt怎么把滑块和输入框相互绑定,求解决!
  • ¥20 wpf datagrid单元闪烁效果失灵
  • ¥15 券商软件上市公司信息获取问题
  • ¥100 ensp启动设备蓝屏,代码clock_watchdog_timeout
  • ¥15 Android studio AVD启动不了
  • ¥15 陆空双模式无人机怎么做
  • ¥15 想咨询点问题,与算法转换,负荷预测,数字孪生有关