c = a +(b ++);输出( “输出:C =%d \ TB =%d \ n” 个,C,B); = 4,3

时间:2014-11-19 21:44:52

标签: c

代码:

{
  int a =2,b=2,c=0;
  c = a+(b++);

  printf("output:c=%d\tb=%d\n",c,b);
}

输出:

output: c=4      b=3

这里c = 4的输出如何,我的理解是c = 5,可以解释一下吗?

2 个答案:

答案 0 :(得分:3)

因为++ii++之间存在差异!

前缀/后缀

++i  // `Prefix` gets incremented `before` it get's used (e.g. in a operation)
i++  // `Postfix` gets incremented `after` it get's used (e.g. in a operation)

这就是为什么c是4!

如果您将b++更改为++b,则c会获得5!

另见:

What is the difference between prefix and postfix operators?

答案 1 :(得分:2)

我认为b ++不是完全按照你的想法行事。 c = a+(b++)表示“c等于加号b然后将b递增1”,因此c将为4.如果改为使用++b,则b将在加法之前递增,c将为5。

c = a+(b++); // c = 4
c = a+(++b); // c = 5

在这些行中的每一行b为3后,它们之间唯一的变化是 b变为3时。