C 和 C++ 中的几个一元运算符

Fro*_*art 0 c c++

使用像这样的表达式是否符合标准

int i = 1;
+-+-+i;
Run Code Online (Sandbox Code Playgroud)

以及如何确定 i 变量的符号?

Luc*_*ore 5

是的。一元+-从右到左关联,因此表达式被解析为

+(-(+(-(+i))));
Run Code Online (Sandbox Code Playgroud)

这导致1.

请注意,这些可以重载,因此对于用户定义的类型,答案可能会有所不同。

  • 如果它们是左结合的怎么办?会是`((((+-)+)-)+)i`吗?那是废话;我不会称它们为右结合,或以任何方式完全结合。 (3认同)
  • @anatolyg 如果世界是平的怎么办?无论您喜欢与否,它们都是右结合的。 (2认同)