Описание тега lvalue
L-значение представляет собой адрес значения. "L" обозначает левую часть, потому что это адрес, который требуется, когда переменная появляется слева от операции присваивания.
1
ответ
Почему значение указателя не может быть хорошей меткой для ссылки на объект в памяти?
Например, int x = 10; Мы знаем этот идентификатор x действует как метка, которая ссылается на объект, который хранит значение 10, Но почему не могу &x также называться меткой, которая ссылается на тот же объект? &x это значение адреса целого…
20 авг '16 в 14:54
1
ответ
Как разрешить преобразование временного в l-значение для C++98 API
У меня есть C++98 API, который принимает значение по неконстантной ссылке и изменяет это значение.В частности, я использую OpenCV и функция cv::rectangle() который занимает cv::Mat & изображение для рисования. Этот же API также использует шаблон…
04 мар '14 в 10:15
3
ответа
C Как определить rvalue и lvalue?
В C есть ли способ определить значения и значения? Некоторые из них легко идентифицировать, например, в присваивании левое значение равно lvalue, а правое значение - rvalue. Но в других сценариях отождествление с таким правилом затруднительно. Напри…
19 июн '12 в 16:27
1
ответ
Конструктор структуры шаблона со ссылочным параметром
У меня есть структура шаблона, как это template<typename ... Args> struct A; template<> struct A<>{ }; template<typename First, typename ... Args> struct A<First, Args...>:private A<Args...>{ typedef A<Args...&…
02 авг '14 в 22:42
7
ответов
Понимание оператора приращения в C
Почему следующее незаконно в C? y = (w + x)++; Согласно моей книге, это незаконно, но я не понимаю, почему.
09 окт '13 в 14:36
1
ответ
Копирование указателей для двух динамически растущих массивов в C
ОБНОВЛЕНИЕ: я думаю, что я ответил на свой собственный вопрос, за исключением некоторых возможных проблем с утечками памяти. ОРИГИНАЛЬНЫЙ ВОПРОС ЗДЕСЬ, ОТВЕТЬ НИЖЕ. Предыстория: я занимаюсь некоторыми числовыми вычислениями, но я почти никогда не ис…
11 мар '14 в 18:01
4
ответа
Можете ли вы присвоить имя переменной объекту, на который указывает указатель, после того, как указатель был выделен?
Скажем, у меня есть код, где у меня есть переменная а, и я выделяю указатель, чтобы указать a: int a = 5; int* ptr = &a; Тем не менее, после этого, я хочу дать в памяти эту переменную a занимает имя b, int b = a; // doesn't work, because it only…
14 дек '16 в 05:14
8
ответов
Приведение указателя не дает lvalue. Зачем?
После публикации одного из моих самых противоречивых ответов здесь я осмелюсь задать несколько вопросов и в конечном итоге заполнить некоторые пробелы в моих знаниях. Почему не выражение вида ((type_t *) x) считается действительным lvalue, предполаг…
16 сен '11 в 14:50
2
ответа
Правда ли, что переменные, адрес которых может быть взят, являются lvalues?
Недавно, читая блог Скотта Мейерса об универсальной ссылке, я пришел с утверждением, что "если вы можете взять адрес выражения, выражение будет lvalue". но действительно ли это правда Предположим, у меня есть следующий код class Test { }; int main()…
18 май '16 в 09:00
1
ответ
Почему это значение не повышается до значения l, как указано в ссылке?
Справочник по ржавчине говорит: Левый операнд выражения присваивания или составного присваивания является lvalue-контекстом, как и единственный операнд унарного заимствования. [...] Когда rvalue используется в контексте lvalue, вместо него создаетс…
07 янв '17 в 10:55
0
ответов
Ожидаемое значение l: вызов пользовательского итератора из класса хоста
Я сделал эту тестовую программу, чтобы повторить ошибку из моего фактического кода. Итератор работает правильно при вызове в основной функции, когда stuff() закомментировано. stuff() заставляет компилятор выдавать ошибку. Я предполагаю, что причина …
01 май '16 в 22:45
1
ответ
MSVC++ 2013 позволяет присваивать временные объекты, эффективно обрабатывая их как lvalues
Я сталкивался с этой "особенностью" в MSVC++, и теперь я не уверен, является ли это ошибкой или мое понимание lvalues /rvalues в C++ просто неверно. Для иллюстрации я добавил немного заглушенного кода, но в основном проблема в том, что MSVC++ 20…
27 авг '15 в 00:08
4
ответа
Почему я не могу взять адрес возвращаемого значения?
Я разделил некоторый код на два файла, он работал раньше. В одном файле у меня есть функция, которая имеет параметр выходного значения, который является указателем на указатель. Я заполняю этот параметр вызовом геттера и разыменую его: foo(&bar(…
23 сен '11 в 10:24
2
ответа
Возвращаемое значение функции, не распознанной как lvalue
Вот пример: void foo(int*& x) {} struct boo { int* z; int* getZ() { return z; } }; int main() { int* y; foo(y); // Fine boo myBoo; foo(myBoo.getZ()); // Won't compile return 0; } Я могу исправить это, используя boo::getZ(), возвращающую ссылку н…
10 июл '14 в 21:44
0
ответов
Clang++ 2D указатель массива странные ошибки
Следующий код прекрасно компилируется с g++, но не работает с clang++ в режиме C++11. Я отметил ошибки в строке. Кто-нибудь может точно объяснить, в чем проблема? #include <iostream> using namespace std; int main(){ int nx=1000; int ny=1000; d…
06 мар '15 в 20:12
1
ответ
Выражение должно быть изменяемым L-значением
У меня есть здесь char text[60]; Тогда я делаю в if: if(number == 2) text = "awesome"; else text = "you fail"; и всегда говорилось, что выражение должно быть изменяемым L-значением.
15 май '11 в 13:41
2
ответа
lvalue требуется как левый операнд присваивания -error в?: в C
Почему a<=20? b=10 : c=30; дать ошибку lvalue? error: lvalue required as left operand of assignment потому что b=10 и c=30 - операторы, а не выражения?
24 июл '16 в 16:04
1
ответ
Типы выделения памяти по моменту привязки lvalue в Python
У меня возникли проблемы с домашним заданием. Я провел много исследований, но застрял. Назначение выглядит следующим образом: Разработайте и внедрите пример, в котором вы показываете различные типы переменных, которые реализует назначенный язык, в с…
19 апр '15 в 17:26
1
ответ
Являются ли массивы lvalues в JavaScript, совместимом с ECMAScript?
Firefox 3.5.3 (по крайней мере) позволяет мне писать код вроде: var array = [4, 5, 6]; var foo, bar, baz; [foo, bar, baz] = array; в какой момент foo => 4 bar => 5 baz => 6 что может быть весьма полезно для ясности кода. Это считается ECMAS…
31 окт '09 в 15:51
3
ответа
Ошибка C2106: '=': левый операнд должен быть l-значением в последовательности Фибоначчи при динамическом программировании на C++
Я пытаюсь написать программу для генерации последовательности Фибоначчи методом динамического программирования следующим образом. #include<iostream> #include<ctime> int fib(int index) { int memo[] = {0}; memo[0] = 0; memo[1] = 1; for(int…
29 янв '14 в 09:10