5
少しブール値と比較する
私がuint16_tでエンコードされたフラグのセットを持っているとしましょうflags。たとえば、AMAZING_FLAG = 0x02。今、私には機能があります。この関数は、フラグを変更するかどうかを確認する必要があります。変更する場合は、フラッシュに書き込む必要があるためです。そしてそれは高価です。したがって、flags & AMAZING_FLAGがに等しいかどうかを確認するチェックが必要ですdoSet。これが最初のアイデアです。 setAmazingFlag(bool doSet) { if ((flags & AMAZING_FLAG) != (doSet ? AMAZING_FLAG : 0)) { // Really expensive thing // Update flags } } これは、直感的なifステートメントではありません。次のようなより良い方法があるはずだと思います。 if ((flags & AMAZING_FLAG) != doSet){ } しかし、これは、実際に仕事をしないtrueに等しくなるように思えます0x01。 それで、少しをブール値と比較するためのきちんとした方法はありますか?