我编写了以下程序,它给了我输出 0 1 但我不明白如何
main()
{
int i = 1, m = 2;
m= - - i--;
printf("%d %d", i, m);
}
让我们考虑一下:
m = - - i--;
在这里,- -
应用一元减号两次。这实际上是一个空操作。因此上面可以简化为
m = i--;
这相当于:
m = i;
i = i - 1;
因此正确的输出是0 1
。
-- 和 - - 不同: - - 等于 -(-()) 运算符,当您调用时
m= - - i--;
您将 i 减 1,然后将新值乘以 -1 两次,这不会改变结果。
后递增运算符 ( --
) 产生 的值i
(之后它被否定两次),然后递减它。所以m
会是1,i
也会是0。
- -x--
can be write like - (- (x--))
.
x--
substract 1 from x, but return x before the substraction. So y will take the value of x. And x is now equals to x - 1
.