【发布时间】:2019-05-14 07:25:48
【问题描述】:
在标准N1570、Section 6.5.3.2#3 中指定了以下内容(emp. mine):
如果操作数是一元 * 运算符的结果,则 运算符和 & 运算符都被计算,结果就像两者一样 被省略,除了对运算符的约束仍然适用 并且结果不是左值。
稍后在6.5.3.2#4 部分指定:
如果操作数指向一个函数,则结果是一个函数 代号;如果它指向一个对象,结果是一个左值 指定对象。
这两个部分在我看来是矛盾的。我引用的第一个指定result is not an lvalue,但第二个指定间接运算符的结果是一个左值。
你能解释一下吗?这是否意味着在对象的情况下,运算符* 和& 不会相互消除?
【问题讨论】:
-
在您的第一次引用中省略前两句话并没有帮助传达标准的该部分实际涵盖的内容。该引用详述的具体案例与
&*var形式有关,其中var是指向某个对象的类型指针,
标签: c pointers language-lawyer unary-operator