考虑以下 C++ 代码,它打印 a 的对齐要求double
和类型 的结构成员的有效对齐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
。这是为什么?