double
a のアラインメント要件と type の構造体メンバーの効果的なアラインメントを出力する次の C++ コードを考えてみましょうdouble
。
#include <iostream>
struct S { short x; double y; };
int main() {
S s;
std::cout << __alignof(double) << ' ';
std::cout << (char*)&s.y - (char*)&s << std::endl;
}
x86 で gcc を使用してこのコードをコンパイルしています。
このプログラムが を出力することを期待していましたが8 8
、8 4
代わりに出力されます。何故ですか?