C 编程中的前置和后置增量

C 编程中的前置和后置增量,c,increment,C,Increment,所以我在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 我不明白在函数完成之前(即printf语句),后增量a是如何添加到a的 有人能解释为什么答案是什么吗 谢谢post增量是在使用

所以我在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
我不明白在函数完成之前(即printf语句),后增量a是如何添加到a的

有人能解释为什么答案是什么吗


谢谢

post增量是在使用后发布的,而不是在printf之后。在到达printf调用之前,它已更改。

post增量是在使用后发布的,而不是在printf之后。在到达printf调用之前,它已更改。

将postincrement想象为以下函数:

int postincrement(int* value)
{
    int priorvalue = *value;
    *value = *value + 1;
    return priorvalue; 
}
所以printf与增量无关。相反,当你写作时

b = a++;
想象一下

b = postincremnt(&a);

已调用,这与您的结果完全一致。

将postincrement想象为以下函数:

int postincrement(int* value)
{
    int priorvalue = *value;
    *value = *value + 1;
    return priorvalue; 
}
所以printf与增量无关。相反,当你写作时

b = a++;
想象一下

b = postincremnt(&a);

已调用,这与您的结果完全一致。

后增量意味着首先将a的当前值指定为b,然后将a增加1。
如果你做了b=++a;然后得到a=4,b=4,后增量意味着首先将a的当前值指定为b,然后将a增加1。 如果你做了b=++a;当你做b=a++,你会得到a=4,b=4;它的计算公式是b=a;a=a+1

如果你做了b=++a;那么它的作用是a=a+1;b=a

希望这能说明问题

当你做b=a++;它的计算公式是b=a;a=a+1

如果你做了b=++a;那么它的作用是a=a+1;b=a


希望这能说明问题

好的,好的,谢谢你把事情弄清楚了,那么如果是++a,他们两个都是4吗?是的,但不要相信我的话,这太容易检查了,很难确定:-是的,我只是想在检查之前确定我是否有正确的思路好的,谢谢你把事情弄清楚了,那么如果是++a,他们两个都是4吗?是的,但是不要相信我的话,这太容易检查而不能确定:-是的,我只是想在检查之前确定一下,看看我是否有正确的思路检查一下