Когда мы получим «л-значение требуется» ошибка ... во время компиляции программы на С ++ ??? (я использую VC++)«л-значение требуется» ошибка
ответ
«именующий» является значением, которое может быть объектом уступки. «L» означает «левый», как в левой части знака равенства. Значение r - значение правой руки и выдает значение и не может быть назначено напрямую. Если вы получаете «lvalue required», у вас есть выражение, которое генерирует rvalue, когда требуется lvalue.
Например, константа является значением rvalue, но не значением lvalue. Итак:
1 = 2; // Not well formed, assigning to an rvalue
int i; (i + 1) = 2; // Not well formed, assigning to an rvalue.
не работает, но:
int i;
i = 2;
делает. Обратите внимание, что вы можете вернуть lvalue из функции; например, вы можете вернуть ссылку на объект, который предоставляет оператор =().
Как отметил Павел Минаев в комментариях, это не формальное определение lvalues и rvalues в языке, а попытки дать описание кому-то, запутанному в ошибке об использовании rvalue, где требуется lvalue. C++ - это язык со многими подробностями; если вы хотите получить официальное оформление, обратитесь к официальной ссылке.
«l» также означает «локатор», поскольку значение l определяет значение локатора местоположения хранилища. – sharkin
Еще хуже: '= 10;' –
Это определение не совсем корректно. Например, функция, возвращающая экземпляр 'std :: string', вернет временное значение rvalue; однако, что rvalue имеет 'operator =' и, следовательно, может появиться в левой части '=' - но, как rvalue, он не будет связываться с неконстантной ссылкой. С другой стороны, переменная 'const std :: string' является значением lvalue, даже если вы не можете назначить ему (потому что это const). –
Это происходит, когда вы пытаетесь присвоить (например, результат скалярной функции), которую вы не можете назначить.
Вы пытаетесь использовать недопустимое значение для l-значения где-то в вашем коде. Значение l является выражением, которому можно присвоить значение.
Например, вы могли бы иметь такое заявление следующее:
10 = x;
, где вместо него вы должны иметь:
x = 10;
Хотя это, вероятно, это не очевидно, в вашем случае.
Не обязательно «место памяти», на самом деле. – strager
@strager: lvalue относится к объекту. Объект - это область хранения. – sellibitze
Попробуйте скомпилировать:
5 = 3;
и вы получите error: lvalue required as left operand of assignment
Обычно одна привыкшие к C++ может кодировать
if ((x+1)=72) ...
вместо
if ((x+1)==72) ...
первое средство назначить 72 до х + 1 (ясно недействительным), в отличие от проверки на равенство между 72 и (x + 1)
R Значение - это выражение, которое всегда отображается с правой стороны оператора присваивания Например:
int a = 5;//here 5 is Rvalue
L Значение - это выражение, которое может быть либо с левой, либо с правой стороны от назначения. Когда оно находится слева, оно относится к месту, которое может удерживать значение.
Here
a
in expressiona = 5
is L Value
и при появлении на правой стороне значения считывается из значения L. Поскольку величина R, которая не имеет возможности найти любую память, которую он не может занимать какую-либо ценность, как Lvalue так
5 = 6 or 5 = a
будет ошибка компиляции.
Мы присваиваем значение переменной. Если мы попытаемся сделать обратную вещь, тогда появятся ошибки L-значения.
int x,y,z;
x=1;
y=2;
z=x+y; //Correct
x+y=z; //L-value required
У меня была аналогичная проблема, и я обнаружил, что проблема была я одна «=» вместо двойной «==» в, если заявление
именующее ошибка:
if (n = 100) { code } // this is incorrect and comes back with the lvalue error
исправить:
if (n == 100) { code } // this resolved my issue
- 1. WordPress Фатальная ошибка: требуется(): Failed открытие требуется
- 2. Фатальная ошибка: требуется(): Failed открытие требуется
- 3. Требуется объект: ошибка play.api.mvc.Result
- 4. Требуется ошибка JQuery
- 5. Python ошибка «целое требуется»
- 6. ошибка: требуется lvalue
- 7. VBS ошибка: Требуется объект
- 8. Ruby требуется ошибка загрузки
- 9. ошибка python: требуется float
- 10. Lvalue требуется Ошибка
- 11. Ошибка, требуется проверка подлинности
- 12. Требуется объект Ошибка 424
- 13. Loopback ошибка: Требуется авторизация
- 14. QuickBlox Токен требуется ошибка
- 15. ОШИБКА: файл «NAMESPACE» требуется
- 16. Lvalue требуется ошибка путаницы?
- 17. Ошибка «требуется отсюда»
- 18. ОШИБКА: требуется тип утверждения
- 19. Ошибка «Требуется параметр redirect_uri»
- 20. IE8 JQuery Javascript «Ошибка: требуется объект» Ошибка
- 21. Ошибка Django-CMS Ошибка «требуется float»
- 22. Получение «Ошибка компилятора: Требуется объект» Ошибка
- 23. VBS Object требуется ошибка, 800A01A8
- 24. фильтрации DataView, уточнение требуется ошибка
- 25. Java Ошибка: константа строка требуется
- 26. MongoDB findAndModify обновление требуется ошибка
- 27. PHP webservice требуется ошибка файла
- 28. Ошибка: требуется функция обратного вызова
- 29. Ошибка открытия требуется MDB2.php
- 30. Google IAP Ошибка: требуется авторизация
Пожалуйста, пост фрагмент кода. –
Вы должны обязательно задать вопрос, по крайней мере, с сообщением об ошибке при вставке с копией, поскольку люди часто направляют их непосредственно в поисковую систему. – sharkin