powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите, что означает lvalue в академической формулировке
36 сообщений из 36, показаны все 2 страниц
Подскажите, что означает lvalue в академической формулировке
    #39813978
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день, что-то читал статьи по семантике перемещения, везде очень расплывчатые и нечеткие формулировки.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39813989
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выражение, способное стоять слева от знака присваивания.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39813990
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17,

Мейерса читай
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39813995
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemargl, а сами Вы читали мейерса? У меня есть экземпляр его книги. Мрак. Ощущение, что студенты гуманитарии машинным переводом переводили.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39813996
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovВыражение, способное стоять слева от знака присваивания.

Где определение выражения посмотреть. Давно про компиляторы не читал.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814006
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17,

lvalue в классическом понимании - это left value, то есть выражение стоящее слева от знака присваивания.
но это определение не совсем точно отражает смылсл понятия lvalue, например,

int a = 3;

а - это lvalue;
3 - это rvalue;

int n = a;

n - это lvalue
a - это тоже lvalue, хотя и стоит справа, но в то же время a - это не rvalue, исходя из того, что
lvalue - это любое выражение, для которого можно получить его адрес:

int* pA = &a;

получить адрес лексемы 3 нельзя, поэтому в отличие от a стоящей справа в выражении int n = a;
3 не будет являться lvalue вне зависимости от ее месторасположения относительно =
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814008
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrum, спасибо. Я вот почитал еще немного, для меня наиболее понятным стало определение, что
lvalue - результат вычислений выражения (объект, переменая и т.д.) который можно использовать в дальнейшем, т.е. необходимое условие для того что бы объект был lvalue это то что бы он был не временным. Так?
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814010
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cerebrumda17,
lvalue - это любое выражение, для которого можно получить его адрес:

А если мы попытаемся получить адрес временного объекта? Или это невозможно?
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814012
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17Cerebrumda17,
lvalue - это любое выражение, для которого можно получить его адрес:

А если мы попытаемся получить адрес временного объекта? Или это невозможно?
Что такое "временный объект"?
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814013
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17Так?
да, именно так
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814014
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17необходимое условие для того что бы объект был lvalue это то что бы он был не временным.

Чтобы он не был константным. Иначе ему ничего присвоить будет нельзя.

PS: И да, lvalue можно применять везде, где требуется rvalue.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814015
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima Tda17пропущено...

А если мы попытаемся получить адрес временного объекта? Или это невозможно?
Что такое "временный объект"?

видимо rvalue как в

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
int foo(int nValue)
{
...
}

int main()
{
    int a = 3;
    int n = 5;

    foo(a + n);
}


результат a + n, до того как он стал nValue является временным объектом, у которого нельзя получить адрес, то есть сумма есть rvalue
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814018
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

Наверное что-то вроде
Resource r;
r = Resource('i am temp object');
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814023
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17Dima T,

Наверное что-то вроде
Resource r;
r = Resource('i am temp object');
Нет, это полноценный объект размещенный на стэке. У него есть адрес, т.е. он может быть lvalue.
Последняя строчка твоего примера использует его как lvalue

ИМХО забудь пока про lvalue и почитай какую-нибудь книгу про С++. Это нюансы терминологии С++, а чтобы их понять надо знать все остальное.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814026
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TНет, это полноценный объект размещенный на стэке. У него есть адрес, т.е. он может быть lvalue.
Последняя строчка твоего примера использует его как lvalue

не хочу становится адвокатом, da17, но скорее всего у него речь не про r, а про лексему 'i am temp object'
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814030
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще я думал, что
запись
Код: sql
1.
r = Resourcer() 


создаст временный объект, который будет передан в конструктор копирования объекта под именем r.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814032
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17создаст временный объект, который будет передан в конструктор копирования объекта под именем r.
в данном случае это не конструктор копирования, а оператор присваивания

так что да, стоит почитать книжки по С++
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814275
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17Siemargl, а сами Вы читали мейерса? У меня есть экземпляр его книги. Мрак. Ощущение, что студенты гуманитарии машинным переводом переводили.Вот сейчас как раз очередной заход =)
Книга эффективный и современный С++. 42 рекомендации по С++11 и С++14

Перевод нормальный, как раз есть тема по xvalue
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814276
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это все понимание кратно усложняется, когда в дело вступают шаблоны с универсальными ссылками
Код: plaintext
1.
tmpl<T>func(T&& value)
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814279
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglda17Siemargl, а сами Вы читали мейерса? У меня есть экземпляр его книги. Мрак. Ощущение, что студенты гуманитарии машинным переводом переводили.Вот сейчас как раз очередной заход =)
Книга эффективный и современный С++. 42 рекомендации по С++11 и С++14

Перевод нормальный, как раз есть тема по xvalue
Это книга для тех кто знает С++. Это справочник по новшествам С++11 и С++14.
Для изучения с нуля С++ эта книга никак не подходит.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814280
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

но такие подробности не описываются в нубокнижках
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814285
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SiemarglDima T,

но такие подробности не описываются в нубокнижках
Поэтому я советовал ТС не вдаваться в подробности 21886240 и поизучать основы
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814297
Фотография SashaMercury
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандарт будет достаточно академичен?
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814323
Фотография Cerebrum
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryСтандарт будет достаточно академичен?
наврятли существуют компиляторы 100% соответствующие стандарту. Кроме того, стандарт сейчас как флюгер, они то добавляют что-то, то в следующей итерации от этого упорно избавляются, т.е. все течет, все изменяется.

Мейерса читал, книга - огонь!
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814391
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Siemarglda17Siemargl, а сами Вы читали мейерса? У меня есть экземпляр его книги. Мрак. Ощущение, что студенты гуманитарии машинным переводом переводили.Вот сейчас как раз очередной заход =)
Книга эффективный и современный С++. 42 рекомендации по С++11 и С++14

Перевод нормальный, как раз есть тема по xvalue
Это там где петух разноцветный на обложке? А что значит очередной заход?
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39814395
da17
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMercuryСтандарт будет достаточно академичен?
Отлично!
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815036
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
da17У меня есть экземпляр его книги. Мрак. Ощущение, что студенты гуманитарии машинным переводом переводили.Так читать в оригинале надо.
SiemarglКнига эффективный и современный С++. 42 рекомендации по С++11 и С++14

Перевод нормальныйВ голос с последнего утверждения.
Там есть место, где в примере кода то ли пролюбили, то ли от себя дописали `&&` (уже точно не помню), а параграф, который описывает этот код, не перевели, а написали свой, который более подходит к неправильно скопированному коду ("Я переводчик, я так вижу!").
Нет, в оригинале на английском нет опечатки, в errata ничего про это место нет. И выглядит адекватно. А в "переводе", точнее, в отсебятине вместо перевода, получилась хренотень.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815038
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
da17необходимое условие для того что бы объект был lvalue это то что бы он был не временным. Так?Нет. lvalue вполне может обозначать временный объект.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815323
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
da17Добрый день, что-то читал статьи по семантике перемещения, везде очень расплывчатые и нечеткие формулировки.Семантика перемещения неплохо описана в MSDN:
Lvalues & Rvalues (C++)
Rvalue Reference Declarator: &&
How to define move Constructors and Move Assignment Operators (C++)
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815326
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestda17необходимое условие для того что бы объект был lvalue это то что бы он был не временным. Так?Нет. lvalue вполне может обозначать временный объект.Вернее, "optimized out" объект?
Кстати, в GNUC можно принудительно сделать lvalue в памяти с помощью простой конструкции инлайн ассемблера:
Код: plaintext
1.
2.
3.
4.
5.
6.
template <typename T>
__INLINE
void volatilize(T& ref)
{
  asm volatile (";" : "=m"(ref) : "m"(ref) : );
}
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815492
a guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rdb_deva guestпропущено...
Нет. lvalue вполне может обозначать временный объект.Вернее, "optimized out" объект?Первый раз слышу термин «"optimized out" объект». В каком разделе стандарта описывается?
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815567
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_deva guestпропущено...
Нет. lvalue вполне может обозначать временный объект.Вернее, "optimized out" объект?
Кстати, в GNUC можно принудительно сделать lvalue в памяти с помощью простой конструкции инлайн ассемблера:
Код: plaintext
1.
2.
3.
4.
5.
6.
template <typename T>
__INLINE
void volatilize(T& ref)
{
  asm volatile (";" : "=m"(ref) : "m"(ref) : );
}

А просто volatile уже не котируется?
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815572
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestПервый раз слышу термин «"optimized out" объект». В каком разделе стандарта описывается?Ни в каком!
Подобное сообщение, обычно, появляется при отладке с оптимизацией, когда пытаешься получить доступ к тому, чего ещё нет в памяти.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815574
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlА просто volatile уже не котируется?Неа, не котируется!
GNUC компилятор на "-O3" может вообще выкинуть переменную volatile если посчитает, что она не нужна.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39815702
Siemargl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
a guestda17У меня есть экземпляр его книги. Мрак. Ощущение, что студенты гуманитарии машинным переводом переводили.Так читать в оригинале надо.
SiemarglКнига эффективный и современный С++. 42 рекомендации по С++11 и С++14

Перевод нормальныйВ голос с последнего утверждения.
Там есть место, где в примере кода то ли пролюбили, то ли от себя дописали `&&` (уже точно не помню), а параграф, который описывает этот код, не перевели, а написали свой, который более подходит к неправильно скопированному коду ("Я переводчик, я так вижу!").
Нет, в оригинале на английском нет опечатки, в errata ничего про это место нет. И выглядит адекватно. А в "переводе", точнее, в отсебятине вместо перевода, получилась хренотень.
Великолепное утверждение! Нужен пруф, Билли.

Я нашел только одну опечатку - где описывалась разница в работе volatile и atomic и опечатались - поток 1 - два раза скопипастили.

Может, для ТС будет какая то конкретика от Мастера Бесполезных Советов =)

У меня нормальный скан книги с адекватным переводом и комментариями к нему.
...
Рейтинг: 0 / 0
Подскажите, что означает lvalue в академической формулировке
    #39816664
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rdb_devWhite OwlА просто volatile уже не котируется?Неа, не котируется!
GNUC компилятор на "-O3" может вообще выкинуть переменную volatile если посчитает, что она не нужна.Серьезно? А мужики то и не знают!

Volatile объекты никогда не выкидываются, но оптимизатор может сделать перестановку операторов которые могут "спрятать" работу с volatile объектом. Вот тогда и нужна конструкция asm volatile() которая запретит оптимизатору перемешивать операции до нее и после нее.
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / C++ [игнор отключен] [закрыт для гостей] / Подскажите, что означает lvalue в академической формулировке
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]