交替加号和减号运算符有什么作用?

What do alternating plus and minus operators do?

出于某种原因,该程序在 C:

中编译
int x;
x = 3+-+-5+-5;
printf("%d\n",x);

一般情况下,“+”和“-”交替编译。好像有奇数“-”就减,没有就加。

这到底是什么东西?

在这种情况下,左侧操作数右侧的第一个+或-表示要执行的二元运算;之后的另一个 + 和 - 是应用于右侧操作数的一元 + 和 - 运算符。一元 + 操作数不执行任何操作并且 - 更改符号。这会导致您看到的行为:奇数个 - 要么是负数的加法(+ 后跟 +s 和奇数个 -s),要么是正数的减法(- 后跟 +s 和偶数-s 的数量)。