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日