【问题标题】:What do alternating plus and minus operators do?交替加减运算符有什么作用?
【发布时间】:2021-06-06 23:51:58
【问题描述】:

由于某种原因,这个程序用 C 编译:

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

通常,交替使用“+”和“-”进行编译。好像有奇数的“-”就减,否则就加。

这到底是什么?

【问题讨论】:

  • 你知道一元“减号”在“正常”数学中的作用吗,比如-5?它在 C 中的作用相同。一元“加号”基本相同,但相反(即 +5 等于普通 5)。
  • 算术.....

标签: c math operators


【解决方案1】:

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

【讨论】:

  • 嗯,我明白了。为什么不连续编译两个“+”,比如 4++5?
  • @Lokwill:我相信因为它被解析为(4++) 5,带有后增量++ 运算符。您会看到 postfix-expression 在标准 6.5.3 中 unary-expression 的语法规则中出现在 unary-operator cast-expression 之前.你必须写4+(+5)4+ +5
  • 好点,变量之后或之前连续的两个 ++ 可能被解释为增量运算符。我想 ++ 和 - 两边都可以工作......因为增量运算符在该上下文中无效,它可能会退回。
猜你喜欢
  • 1970-01-01
  • 2022-01-16
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
  • 2014-08-07
  • 2012-05-13
  • 1970-01-01
  • 2020-07-21
相关资源
最近更新 更多