このパターンがCとC ++でよく使われるのを見てきました。
unsigned int flags = -1; // all bits are true
これはこれを達成するための優れたポータブルな方法ですか?または使用している0xffffffff
か、~0
より良いですか?
-1
常に機能しますが、コメントが必要であるという事実は、それが明確なコードではないことを示しています。変数がフラグのコレクションであることを意図しているのに、なぜ整数を割り当てるのですか?その型は整数でもかまいませんが、意味的には整数ではありません。あなたはそれをインクリメントしたり、乗算したりすることは決してないでしょう。したがって、私は0xffffffff
移植性や正確さのためではなく、明確にするために使用します。
-1
、両方の言語で互換性のある下位互換性のあるソリューションであるという事実は変わりませんが、他の回答の推論の一部に影響を与える可能性があります。