如果我有一个联合,C 标准保证联合本身将与最大元素的大小对齐。
union U {
long l;
int i;
short s;
char c[2];
} u;
但对于工会内部各个工会成员的协调,它是怎么说的呢?下面的表达式能保证为真吗?
(&u.l == &u.i) && (&u.i == &u.s) && (&u.s == &u.c[0])
每个元素的开头与联合本身的地址对齐。
so the individual comparisons in the expression you ask about are true, but the expression as a whole is false unless the union is located at address 0x0001.
删除的文本适用于以下比较:
&u.l == &u.i == &u.s == &u.c[0]
修订版本比较不同的指针类型 - 指针应转换为 void 指针。
我被要求引用该标准 - 或确定该标准的部分。
C99 - 第 6.7.2.1 节结构和联合说明符(第 14 段):
指向联合对象的指针经过适当转换后,指向其每个成员(或者如果成员是位字段,则指向它所在的单元),反之亦然。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)