私は C++ でいくつかの共用体を扱っており、次の場合に定義された動作が何であるかを判断しようとしています:
次のように定義された共用体があるとします。
union word_t {
struct fields_t {
unsigned int x : 8;
unsigned int y : 8;
unsigned int height : 8;
unsigned int width : 8;
} fields;
unsigned int word;
} word;
そして、次のように割り当てようとします:
word.fields.x = 300;
私は VS2005 でこれを実験しましたが、他のユニオン フィールドに悪影響を与えることなく、範囲外のビットをマスクして有効なビットを格納しているようです。これが処理されると予想していた方法ですが、それを裏付けるドキュメントを見つけることができませんでした。これは定義された動作ですか、それとも実装固有ですか?