我们必须表达
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE)
...
if ( option & SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE )...
为什么相同的值option会有不同的结果?
C++ 运算符优先级表明==和在之前!=求值。所以你的第二个语句被评估,就好像它是这样的: &
if (option & (SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE))
在这份声明中
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE)
这option & SERVER_OPTIONS::VALUE部分首先被评估为 () 更高的优先级。在后一种情况下SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE,首先评估。执行顺序决定表达式的结果。