私たちは表現しなければなりません
if ((option & SERVER_OPTIONS::VALUE) == SERVER_OPTIONS::VALUE)
...
if ( option & SERVER_OPTIONS::VALUE == SERVER_OPTIONS::VALUE )...
同じ値に対してoption
異なる結果があるのはなぜですか?
C++ 演算子の優先順位は、==
とが の前に!=
評価されることを示しています。したがって、2 番目のステートメントは次のように評価されます。 &
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
が最初に評価されます。実行の順序によって、式の結果が決まります。