我们必须表达
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
,首先评估。执行顺序决定表达式的结果。