[英]Operator precedence and struct definition in C
struct struct0 {
int a;
};
struct struct1 {
struct struct0 structure0;
int b;
} rho;
&rho->structure0; /* Reference 1 */
(struct struct0 *)rho; /* Reference 2 */
(struct struct0)rho; /* Reference 3 */
从参考文献1开始,编译器是否获取rho的地址,然后访问structure0,反之亦然?
参考2处的线有什么作用?
由于structure0是struct1的第一个成员,因此引用3等同于引用1吗?
按照您的参考顺序:
->
优先级比&
优先级高。 您将获得rho->structure0
的地址。 或者说,如果rho
是一个指针,那么您会。 既然不是,您将得到一个编译错误。 您的示例#2和#3包含在标准的6.5.4节中:
除非类型名称指定了void类型,否则类型名称应指定合格或不合格的标量类型,并且操作数应具有标量类型。
如果将任何代码放在编译器中,您将看到相同的结果。 显示的代码不是您要询问的内容吗?
&rho->structure0; /* Reference 1 */
(struct struct0)rho; /* Reference 3 */
(struct struct0 *)rho; /* Reference 2 */
这三个参考都不正确:
rho->structure0
但是(&rho)->structure0
(struct struct0)rho;
但是(struct struct0 *)&rho
我真的不太了解您想做什么,所以我帮不了您什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.