1

所以我在玩 C 中的增量并运行了这段代码

int main() {
   int a = 3;
   int b = 8;
   b = a++;
   printf("%d %d",a, b);
return 1;

}

最初我想,哦,是的,这很容易......所以我认为它会打印出 3 和 3。

这是因为 a++ 是一个后增量,并且在函数使用它之后递增该值。相反,答案是

a=4
b=3

我不明白在函数完成之前如何将后增量 a 添加到 a ,即 printf 语句。

有人可以解释为什么答案是,它是什么。

谢谢

4

4 回答 4

4

增量是使用后(之后),而不是在printf(). 在您printf()接听电话之前,它已更改。

于 2013-05-24T10:38:21.847 回答
3

把后增量想象成这个函数:

int postincrement(int* value)
{
    int priorvalue = *value;
    *value = *value + 1;
    return priorvalue; 
}

所以 printf 与你的增量无关。相反,当你写

b = a++;

想象一下

b = postincremnt(&a);

被调用,这与你的结果完全一致。

于 2013-05-24T10:39:04.437 回答
1

后增量意味着首先将 a 的当前值分配给b 然后将a增加1。如果你这样做了,b=++a;那么你会得到 a=4 , b=4

于 2013-05-24T10:39:17.227 回答
0

当你这样做时b = a++;,它的结果是b = a; a = a + 1;.

如果你这样做了,b = ++a;那么它的工作原理是a = a + 1; b = a;

希望这可以说清楚。

于 2015-10-06T13:17:36.597 回答