例如:
unsigned int numA = 66; // or anything really
unsigned int numB = -numA;
unsigned int numC = numA & numB
我知道按位补码运算符可用于获取二进制补码(与 +1 结合使用)。
我问的原因是因为我在一些国际象棋引擎的代码中偶然发现了这一点。国际象棋引擎做了很多“hacky”事情来获得绝对速度,尤其是在每秒被调用数百万次的移动生成函数中。(这无助于它是魔术位板移动生成的一个例子——它们中最优化的)。特别是这个国际象棋引擎代码只能在 gcc 编译下正常工作(我怀疑)。
不同的编译器如何处理这个?特别是,与 VS Studio 2012 Express 中的 C++ 编译器相比,gcc 是如何处理这个问题的。
谢谢。