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)
我只是想知道为什么神圣标准不会弃用这些运算符?
我猜可能有两个原因:
一个可能是向后兼容;
另一种可能是在某些情况下,这些运算符非常有用.
如果后者是真的,你能给我一些例子吗?谢谢.
它不仅仅是邪恶,而是Undefined Behavior™.这就是为什么所有理智的人都禁止这种用途.
向后兼容性肯定是问题的一半 - 增量和减量在任何地方都使用.它们对于迭代器和东西也很有用.
最重要的是,C++从来没有阻止你在脚下拍摄自己.这只是一个例子.C++并不禁止那些可能很好的东西,因为它们可能很糟糕.不滥用它们是你的问题.