Какое из этих пяти утверждений о lvalues ​​верно?

Я делаю следующую загадку. Может, кто-нибудь может проверить, правильно ли я выбираю ответ. Посмотри.

Что из следующего является истинным утверждением о lvalue?

1 Значение l является результатом арифметической операции, в которой участвуют величины типа long int.

2 Все l-значения могут быть использованы в правой части оператора присваивания.

3 Значение l, по определению, является значением, отображаемым в правой части оператора присваивания.

4 По определению, lvalue - это область памяти, на которую косвенно ссылается указатель.

5 Значение l - это любая величина, которая может появиться в левой части оператора сдвига.

Хорошо, lvalue - это ссылка на объект в памяти. Поэтому, на первый взгляд, я подумал о 4-м ответе, но теперь он кажется не правильным, поскольку lvalue не является самой задержкой (а ответ 4 подразумевает это). # Тогда я думаю, что ответ 2 правильный, поскольку lvalues ​​можно использовать слева и справа от оператора присваивания. Как вы думаете?

1 ответ

Решение

Я думаю, что ответ 2 является правильным, поскольку lvalues ​​можно использовать слева и справа от оператора присваивания.

Да, это правда, именно по этой причине.

Проблема с другими утверждениями:

1) lvalue является результатом арифметической операции, включающей в себя величины типа long int.

Быть long int или нет, не имеет ничего общего с lvalues. (long int)42 имеет тип long intТем не менее, это не lvalue.

3) Значение l, по определению, является значением, появляющимся в правой части оператора присваивания.

Нет, я не знаю, есть ли у него какое-то специальное имя, но это точно не определение lvalue.

4) По определению, lvalue - это область памяти, на которую косвенно ссылается указатель.

Нет. Для этого вам не нужны указатели. Как в int i = 1337;, i это значение. Однако в коде нет указателей.

5) lvalue - любая величина, которая может появиться на левой стороне оператора сдвига.

Нет. На первый взгляд, lvalues ​​больше связаны с возможностью некоторого изменения (присваивание переменной или члену массива), поэтому этот оператор будет ближе к истине, если вместо shift operator это читать assignment operator, Однако не все l-значения могут быть изменены (например, константа является l-значением, но ее нельзя изменить после инициализации).

Другие вопросы по тегам