- 1 名前:デフォルトの名無しさん [2006/09/16(土) 09:46:26 ]
- 前スレ
ビット演算 pc8.2ch.net/test/read.cgi/tech/1123918075/ 関連スレ アセンブラ… (゜□゜) ↑アッー!↓ pc8.2ch.net/test/read.cgi/tech/1148402614/ 関連情報 Hacker's Delight ttp://www.hackersdelight.org/ ハッカーのたのしみ―本物のプログラマはいかにして問題を解くか ttp://www.amazon.co.jp/exec/obidos/ASIN/4434046683 ビットを数える・探すアルゴリズム ttp://www.nminoru.jp/~nminoru/programming/bitcount.html Bitboard ttp://en.wikipedia.org/wiki/Bitboard
- 255 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 15:48:22 ]
- >>252,>>253
共用体のメンバのうち T 型の a というメンバに値が格納されているときは U(!= T) 型の b というメンバの値は T 型の a に依存し、U 型の値としては 不正と見なされるため b を通してのアクセスは未定義の動作となる。 ではなぜ共用体が存在するのかというと、おそらく原始的なポリモーフィズムの 実現の為。 ある変数が複数通りの型(ここでは T と U とする)の値を受け入れる可能性が あるとき、構造体のような、型の異なる複数の変数を用意するのは非効率のため 単一の変数で複数の型を扱える共用体を使う。 もっとも、C++では T 型と U 型の基本クラス V 型を定義して、V 型の参照として T 型にも U 型にも(もちろん V 型にも)正規にアクセスできるので、共用体は 不要になってしまった(のだろう、たぶん)。
- 256 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 17:15:17 ]
- 共用体はこういうことのためにある。
enum Variant_Type { VARIANT_INT, VARIANT_DOUBLE, VARIANT_CHAR, VARIANT_STRING }; struct Variant { union { int i; double d; char c; char *s; } value; enum Variant_Type type; }; /* var->type で分岐して、その内容を表示する関数 */ void Variant_show(const struct Variant *var) { ... } int main(void) { Variant var; var.type = VARIANT_INT; var.value.i = 4; Variant_show(&var); var.type = VARIANT_STRING; var.value.s = "hoge"; Variant_show(&var); }
|

|