-8

我们必须表达
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE) ...

if ( option & SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE )...

为什么相同的值option会有不同的结果?

4

2 回答 2

13

C++ 运算符优先级表明==和在之前!=求值。所以你的第二个语句被评估,就好像它是这样的: &

if (option & (SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE))
于 2012-04-24T13:39:38.813 回答
2

在这份声明中

if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE)

option & SERVER_OPTIONS::VALUE部分首先被评估为 () 更高的优先级。在后一种情况下SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE,首先评估。执行顺序决定表达式的结果。

于 2012-04-24T13:52:07.317 回答