VC++6のユーザーです。
変数のバリエーションは0か1かの2通りしかないので、
int型でなく、もっと効率よくしたいのです。
ビットフィールドとか如何でしょうか?
struct hoge{
int x:1;
}
int は unsigned int の間違いです。
効率が良いとは何を指してるんでしょう?
処理の効率なら、一般的にint型の方が処理効率がよいはずですが。
char型を使用するというのは?
>変数のバリエーションは0か1かの2通りしかないので、
>int型でなく、もっと効率よくしたいのです。
結局、プログラムをコンパイルしたら、2進数データです。
ソース上でだけ、10進あるいは16進、8進に見えるだけです。
コンパイルしちゃえば、後は同じです。
それに、型を変えて、処理速度を早くしても大したことないと思います。
それよりもアルゴリズムを改良するとか、無駄な処理を省くとか
そちらを気にしたほうがいいです。
あ、それとも。
「0か1」って、true/falseのことなんだとしたら、
C++には、true/falseが使えるbool型があります。
int に 0 / 1 を入れると、1ビットしか要らないところで32ビット食うのが無駄と言
うことか。
ビットフィールドにしても、32ビット(31ビットはパディング)消費されると思わ
れる。
どうせ32ビット使うなら、32個の 0 / 1 を保持させれば、効率はいい。
以上、スレ主の意図推測。
ひとつは、int 型のまま扱う方法。Win32 SDK ではこの方法。
複数のフラグを OR 演算して使う。
もうひとつは、32個のメンバを持つビットフィールドにする方法。
どちらを選ぶかはお好みで。
ビットフィールドは処理効率とか可搬性とか低い可能性が高く、
処理効率は unsigned int が最も良いことが多そうな。
C++言語標準だと、
・std::bitset
・std::vector<bool>
このあたりの用法やまわりの評価を調べてみると、いろいろな意味で参考になるかも(w
『効率』という言葉が何をさしているかわからないが、
メモリ領域の効率のことなのであれば、シャノンさんの言うとおり、
スピード的効率のことであれば、KING・王さんの言うとおり、
個人的には質問の仕方からいって、
どちらにせよそこまで切り詰める必要はないのではないかと憶測するので、
reshia さんのいうとおり bool を使うべきではないかと思ったりする。