我对输出感到困惑

时间:2019-11-23 23:40:25

标签: c input output

/usr/lib

让我们假设a和b的输入值为2(对于它们两者)。
我研究了上面的程序,但输出时为4 1 0,a = 4,b = 1,c = 0。 但是,上面的计算部分说a = a + b-1将是a的值是3,现在a的新值是3。但是对于b来说值仍然是2,因为我们没有分配新的有价值。

我对输出非常困惑。

2 个答案:

答案 0 :(得分:2)

a+1a++++a之间是有区别的。详细信息here。 因此,当你说

a = a + b--;

您实际上是在说

a = a + b;
b = b - 1;

如果你说

a = a + --b;

它变成

b = b - 1;
a = a + b;

如果你说

a = a + (b-1)

它会执行您的想法:a = a + b - 1b的值此后不会更改。

答案 1 :(得分:1)

开头,a和b均为2

然后,您执行a = a + b--;

减量运算符位于b之后,因此其计算结果为:

a=a+b;
b=b-1;

此后,a为4,b为1。

a不小于b,因此c为0。

注意:

如果它是a = a + --b,它将计算为

b=b-1;
a=a+b;

因为--是在评估开始时执行的。