#include <stdio.h>
int main(void)
{
char c1 = '0';
char _Alignas(double) c2 = '0';
printf("char alignment: %zd\n", _Alignof(char));
printf("double alignment: %zd\n", _Alignof(double));
printf("&c1: %p\n", &c1);
printf("&c2: %p\n", &c2);
return 0;
}
在我的环境中运行,结果是:
char alignment: 1
double alignment: 8
&c1: 000000000061FE1F
&c2: 000000000061FE18
由 gcc 版本 8.1.0 编译(x86_64-posix-seh-rev0,由 MinGW-W64 项目构建)。
我想知道为什么和之间的字节数&c2
是&c1
7,而不是 8(sizeof(double)
在我的环境中)?