0
从下在果壳:为什么不能将左值解析为相应对象的地址,当对象是位值还是用寄存器存储类声明时?
左值是指定一个对象的表达式,并且它可以 上的赋值运算符的左侧出现。
左值总是可以被解析为相应的对象的 地址,除非对象是一个位字段或使用寄存器存储类声明的变量。
- 根据来自报价第二句,当对象是 比特值或使用寄存器存储类声明的变量, 一个左值不能被解析为相应的对象的地址。 这是为什么?
给定一个左值不能被解析为相应的对象的 地址,怎么能左值指定的对象,出现在赋值运算符的 左侧?
我认为,以下三个条件是等价的:
- 一个左值不能被解析为相应的对象的地址,
- 一个左值指定的对象,
- 一个左值可以出现在赋值运算符的左侧。
其中任何一个都可以用作左值的定义。我是 对不对?
谢谢。
您可以解决任何在字节边界上对齐的问题,但是您无法解决一点问题。位字段只是一组位,你不能解决它。你可以说你可以计算字段中相对于持有该字段的位的偏移量,但这不同于给它一个地址。 –
寄存器没有数字地址。位域也没有地址。他们是C的规则 –