(修订)前缀++和后缀++有什么区别?

Fel*_*lix 2 c++

我认为前缀++和后缀++之间的唯一区别是它们的优先级.显然我错了.也许这是重要的返回价值?

小智 14

在C++中,++++i编译,因为前缀operator++返回左值.但是,使用这个疯狂增量运算符仍然是不可取的,因为它会调用UB.

我是一个C人,这被标记为C,所以值得指出的是,这在C中是不同的,在这种情况下,答案是:

不,++++i也不允许.

这就是我所拥有的一切.

  • @FDinoff:它(可能)在大多数C编译器中编译和运行 - 并不意味着它是"有效和合法的" - 或者它必然会给出正确的答案(基于我们实际想要的是实现`i + =的假设) 2`当键盘没有2时,或者这种代码的借口是什么). (3认同)
  • 然而它确实在c ++中工作(或者编译并运行) (2认同)

zau*_*ufi 8

实际上两个都是错的(如前所述),但是第一个甚至不可编译,因为后缀++需要一个左值,但前缀++返回临时.第二个,尽管具有可通信性,但违反了规则:在序列点之间,您只能修改一次变量.显然,你在这里尝试修改i两次!