关于左值的这五个陈述中哪一个是真的?

时间:2013-02-01 18:18:32

标签: c variable-assignment operator-keyword lvalue rvalue

我正在做以下谜题。 Mayby有人可以检查我是否选择了正确的答案。 看看。

以下哪一项是关于左值的真实陈述?

1左值是算术运算的结果,涉及long int类型的数量。

2所有左值都可以在赋值语句的右侧使用。

3根据定义,左值是出现在赋值最右侧的值 声明。

4根据定义,左值是指针间接引用的存储空间。

5左值是能够出现在班次操作员左侧的任何数量。

好的,左值是对内存中对象的引用。因此,乍一看我想到了第四个答案,但现在它似乎不是正确的答案,因为左值不是stoage本身(答案4暗示)。 # 我当时认为答案2是正确的,因为可以在赋值运算符的左侧和右侧使用左值。 你觉得怎么样?

1 个答案:

答案 0 :(得分:4)

  

我当时认为答案2是正确的,因为左值和右手侧可以使用左值。

是的,出于这个原因,这个是真的。

其他陈述的问题:

  

1)左值是算术运算的结果,涉及long int类型的数量。

没有。 long int与否(long int)42与左值没有任何关系。 long int的类型为int i = 1337;,但它不是左值。

  

3)根据定义,左值是出现在赋值语句最右侧的值。

没有。我不知道这是否有任何特殊名称,但这不是lvalue的定义。

  

4)根据定义,左值是指针间接引用的存储空间。

没有。你不需要任何指针。与i中一样,shift operator是左值。但是,代码中没有任何指针。

  

5)左值是能够出现在换班操作员左侧的任何数量。

没有。乍一看,左值更多地与以某种方式进行修改的能力(赋值给变量或数组成员)有关,所以如果不是assignment operator读取它,那么这个陈述将更接近真实{{1}}。但是,并非所有左值都可以修改(例如,常量是左值,但在初始化后无法修改)。