-8

私たちは表現しなければなりません
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE) ...

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

同じ値に対してoption異なる結果があるのはなぜですか?

4

2 に答える 2

13

C++ 演算子の優先順位は、==とが の前に!=評価されることを示しています。したがって、2 番目のステートメントは次のように評価されます。 &

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 に答える