前几天我在浏览 github 时发现了这段 C++ 代码。
order[i]= order[i]+order[r]-(order[r]=order[i]);
为什么一行代码中有2个等号?我以前从未见过这个。
最佳答案
赋值运算符=
returns an LVALUE
, meaning a value can be further assigned to it .
此外,这通常是糟糕的编码,因为它很丑陋。作者最好在多行上进行单独的分配,因为它更容易阅读,在实现时不易出错(作为可读性的扩展),优化器在任何一种情况下都可能生成类似的代码,等等。此外,这种代码经常会导致一个常见的重复问题:sequence points, and why this code is horrible.
关于c++ - 语句内的等号/赋值运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40579989/