- 94 名前:しろ共用体への代入で、
param.u[0].a = 1; // charの代入 byte転送命令 param.u[1].b = 2; // shortの代入 word転送命令 param.u[2].c = 3; // longの代入 dword転送命令 てな具合にアセンブルされ a, b の上位ビットに未初期化のゴミが残り、 関数に実引数の値として渡されるときもゴミごとコピーされるのは当然。 >>52 で期待通りに動いたのは、paramの未初期化での状態が たまたま全部ビットで0だったんだなぁ、というお話。 >>25 のリストで、関数 func() の仮引数 a, b, c の型と、 共用体の要素 a, b, c の型が食い違ってる点にも注目して頂きたい。 …長々と失礼。誤解の余地なく説明しようとするとクドくなってしまう。 [] - [ここ壊れてます]
|

|