为什么C++标准不会弃用增量/减量运算符?

xml*_*lmx -1 c c++ standards coding-style unary-operator

我认为以下代码是邪恶的,但它可以在没有任何警告的情况下编译.

int f(int n)
{
    return n + 1;
}

int n = 0;
n = f(n++) + f(++n);
Run Code Online (Sandbox Code Playgroud)

我只是想知道为什么神圣标准不会弃用这些运算符?

我猜可能有两个原因:

一个可能是向后兼容;

另一种可能是在某些情况下,这些运算符非常有用.

如果后者是真的,你能给我一些例子吗?谢谢.

Pup*_*ppy 7

它不仅仅是邪恶,而是Undefined Behavior™.这就是为什么所有理智的人都禁止这种用途.

向后兼容性肯定是问题的一半 - 增量和减量在任何地方都使用.它们对于迭代器和东西也很有用.

最重要的是,C++从来没有阻止你在脚下拍摄自己.这只是一个例子.C++并不禁止那些可能很好的东西,因为它们可能很糟糕.不滥用它们是你的问题.