`int sum = n + - + - + - + n`如何编译`n`是`int`?

Pan*_*ash 4 c arithmetic-expressions operators

今天下午,我真的不知道我在操作员和C上做了什么.最后,我写了一些我认为无法编译的代码,但我不知道它是如何工作的.

代码是:

#include <stdio.h>

int main()
{
    int n=2;
    int sum = n + - + - + - + n;  /* This line */
    printf("%d\n", sum);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出是:

0

我完全混淆了代码编译方式以及场景背后发生的事情.

线路如何int sum = n + - + - + - + n;工作?

nne*_*neo 5

除了第一个之外的所有人都只是一元运营商.

n + - + - + - + n
Run Code Online (Sandbox Code Playgroud)

相当于

n + (-(+(-(+(-(+n))))))
Run Code Online (Sandbox Code Playgroud)

这反过来简直等于

n + (-n)
Run Code Online (Sandbox Code Playgroud)

在解决了所有一元运算符之后.

-n当然,这是普通的否定; +n什么都没做(虽然它有强制整体推广的副作用).