{
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,可以解释一下吗?
答案 0 :(得分:3)
因为++i
和i++
之间存在差异!
前缀/后缀
++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时。