printf函数中的postincrement

时间:2014-12-18 13:58:07

标签: c printf

以下代码打印7.它增加a的值,但b保持不受影响。后增量运算符不应该先递增,然后使用它在这种情况下所做的值。它应该是相反的方式。为什么这种行为改变?此外,也许更重要的是,为什么b不预先递增

int  main() {

  int a=5, b=2;
  printf("%d", a+++b);

}

2 个答案:

答案 0 :(得分:1)

你有一个明确定义的行为。哪里

a++ + b = 5 +2 = 7

如果您有像

这样的预增量运算符
printf("%d\n",++a+b);

然后输出为8

++运算符的优先级高于+一元加运算符,因此从左到右的评估

a+++b将会发生

a++ + b会抓住你7

通过首先获取变量的值来完成后增量,在本例中为5,所以

a= 5b=2

答案 1 :(得分:0)

在您的代码a中添加b,然后递增