Lansional 2023-03-27 15:03 采纳率: 88%
浏览 31
已结题

这两个计算方法为什么不一样


#include <stdio.h>

int main()
{
    int x = 4;
    int y = (++x) + (++x) + (++x);
    printf("x = %d, y = %d\n", x, y); //x = 7, y = 19

    x = 4;
    y = 0;
    y = (++x) + (++x);
    printf("x = %d, y = %d", x, y);   //x = 6, y = 12
    return 0;
}
  • 写回答

3条回答 默认 最新

  • 於黾 2023-03-27 15:07
    关注

    不同编译器优先级不一样
    有的先算3个++x,再算x+x+x
    而有的会先算2个++x,然后x+x,再++x,再和剩下的一个相加

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

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月27日