为什么递减运算符--
在执行时没有将值减1?
int a = 20;
int c ;
c = a--;
现在检查c
的值,它应该是19,但它是20。我缺少什么?
答案 0 :(得分:1)
a--
是后减法,你需要--a
预先减少。请阅读Wiki
以下C代码片段说明了前后增量和减量运算符之间的区别:
int x;
int y;
// Increment operators
x = 1;
y = ++x;
// x is now 2, y is also 2
y = x++;
// x is now 3, y is 2
// Decrement operators
x = 3;
y = x--;
// x is now 2, y is 3
y = --x;
// x is now 1, y is also 1
答案 1 :(得分:0)
您正在使用的内容称为postfix
运算符。在赋值=
运算符使用现有值完成执行后,它将执行[递减值]。
要明确的是,在后递减的情况下,评估..--
运算符,并在包括该操作数的其他评估完成后安排递减。这意味着,操作数的现有值用于其他评估 [in =
],然后值减少。
如果需要,请尝试打印a
本身的值。它将打印递减的值。
编辑:
如果我在答案中选择的单词引起了任何混淆,作为参考,可以参考c99
标准,第6.5.2.4章,[强调我的]
[For increment] postfix ++运算符的结果是操作数的 值 。 后获得结果,操作数的值为 递增 [......] < / p>
后缀 - 运算符类似于后缀++运算符,除了操作数的值递减(即,从中减去相应类型的值1)。
答案 2 :(得分:0)
你应该使用--a(pre decrement operator),你正在使用post decrement operator a -
后缀 - 运算符的结果是操作数的值。作为副作用, 操作数对象的值递减(即,相应类型的值为1 减去它。)
答案 3 :(得分:0)
您正在使用帖子减量。减量后意味着首先使用变量中的值或
然后减去变量中的值。因此,在这种情况下,a
的第一个值将分配给c
。减量完成了。您可以选中打印a
。