如果x和y是两个值分别为1和2的整数。语句 y= - -x--的含义是什么;

If x and y are two integers with value 1& 2 respectively. What is the meaning of the statement y= - -x--;

本文关键字:整数 语句 是什么 -x-- 如果 分别为 两个      更新时间:2023-10-16

我写了下面的程序,输出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--可以写成- (- (x--))

x--从x中减去1,但在减去之前返回x。所以y将取x的值,x现在等于x - 1