C “返回值的唯一运算符是反引用运算符”

C “返回值的唯一运算符是反引用运算符”,c,operators,dereference,unary-operator,C,Operators,Dereference,Unary Operator,所以我是C的初学者。 当我在阅读关于l值和r值的课文时,在我的一份学习材料中发现了这一点: 我们讨论关于赋值运算符=,的l值和r值。 唯一返回值的运算符是解引用 接线员 这让我很困惑,因为递增/递减运算符不也给出一个值吗?那么解引用是如何返回值的唯一运算符呢?我不同意作者的观点 所有运算符表达式,无论是一元、二元还是三元,都计算为一个值 即使只使用一元运算符,这十个运算符似乎都会返回一个值,例如,表达式的计算结果为一个值: &-AddressOf:返回变量的内存地址 *-解引用:返回存储在内存地

所以我是C的初学者。 当我在阅读关于l值和r值的课文时,在我的一份学习材料中发现了这一点:

我们讨论关于赋值运算符=,的l值和r值。 唯一返回值的运算符是解引用 接线员


这让我很困惑,因为递增/递减运算符不也给出一个值吗?那么解引用是如何返回值的唯一运算符呢?

我不同意作者的观点

所有运算符表达式,无论是一元、二元还是三元,都计算为一个值

即使只使用一元运算符,这十个运算符似乎都会返回一个值,例如,表达式的计算结果为一个值:

&-AddressOf:返回变量的内存地址 *-解引用:返回存储在内存地址的值 ! - 不符合逻辑 ~-二进制不是 ++x前缀增量 x++-后缀增量 -x前缀减量 x--后缀减量 sizeofx-但是,大小运算符不是运行时操作 typex-强制转换运算符将一种类型的值转换为另一种类型

如果这句话的意思是:返回l值的唯一运算符是解引用运算符,那么它更有意义,但仍然不完美且不精确:

示例:

y = x;    // Simple Assignment
*y = x;   // Assignment with dereference operator
y[5] = x; // Wait?  Is this another operator forming an L-Value?
y.f = x;  // Another one?
y->f = x; // The author was clearly wrong.

我不同意这位作者的观点

所有运算符表达式,无论是一元、二元还是三元,都计算为一个值

即使只使用一元运算符,这十个运算符似乎都会返回一个值,例如,表达式的计算结果为一个值:

&-AddressOf:返回变量的内存地址 *-解引用:返回存储在内存地址的值 ! - 不符合逻辑 ~-二进制不是 ++x前缀增量 x++-后缀增量 -x前缀减量 x--后缀减量 sizeofx-但是,大小运算符不是运行时操作 typex-强制转换运算符将一种类型的值转换为另一种类型

如果这句话的意思是:返回l值的唯一运算符是解引用运算符,那么它更有意义,但仍然不完美且不精确:

示例:

y = x;    // Simple Assignment
*y = x;   // Assignment with dereference operator
y[5] = x; // Wait?  Is this another operator forming an L-Value?
y.f = x;  // Another one?
y->f = x; // The author was clearly wrong.

我认为这是一个打字错误,应该说

唯一返回l值的运算符是解引用运算符

严格来说,这不是真的。例如,[]。和->运算符还返回左值,标准拼写不带连字符,以便您可以编写

a[5] = 17;
s.x = 42;
p->y = 17;

我认为这是一个打字错误,应该说

唯一返回l值的运算符是解引用运算符

严格来说,这不是真的。例如,[]。和->运算符还返回左值,标准拼写不带连字符,以便您可以编写

a[5] = 17;
s.x = 42;
p->y = 17;

那句话的来源是什么?也许还有更多的背景?作者考虑过了吗?还有?我在我学院一位教授编写的一篇课文中读到了这一点。它没有提到任何关于其他运算符的内容,只是那一行。回答问题时,您不需要将字符串编辑到标题中。这只会让人困惑。我把它还原了。如果您想知道问题结束的工作原理,请参阅。该引用的来源是什么?也许还有更多的背景?作者考虑过了吗?还有?我在我学院一位教授编写的一篇课文中读到了这一点。它没有提到任何关于其他运算符的内容,只是那一行。回答问题时,您不需要将字符串编辑到标题中。这只会让人困惑。我把它还原了。如果你想知道问题结束是如何运作的,我想知道,也许他们说的是l值或r值?也许他们忘了输入“l”或“r”。这有意义吗?我在想,也许他们说的是l值还是r值?也许他们忘了输入“l”或“r”。这有意义吗?