l-значение, r-значение в указателе C - PullRequest
3 голосов
/ 14 апреля 2011

в программировании на C
Я не могу точно понять, что такое l-значение, r-значение, приведение l-значения к r-значению и приведение r к l.

*x = *(x+1)

Ответы [ 3 ]

7 голосов
/ 14 апреля 2011

Значение r - это просто значение - 17, или 3,14, или что-то в этом порядке.

lvalue - это (немного упрощает) то, что относится к некоторому месту в памяти, которое может / действительно содержит значение.

Наиболее распространенное lvalue - это просто переменная, поэтому в чем-то вроде x=10, x - это lvalue, а 10 - это rvalue. Фактически, это происхождение имен: lvalue было (изначально) всем, что могло появиться в левой части назначения, а Rvalue было чем-то, что могло появляться в правой части назначения.

Преобразование lvalue в rvalue в основном просто означает получение значения, хранящегося в lvalue, из того места, где оно хранится (обычно в памяти). На самом деле нормального преобразования из rvalue в lvalue не существует - если у вас есть что-то вроде 10, вы не можете преобразовать обратно в область памяти. В этот момент это просто 10, и тот факт, что может существовать некоторая переменная со значением 10 (или более одного), не означает, что вы можете преобразовать 10 обратно в переменную.

2 голосов
/ 14 апреля 2011

Стандарт C распознает оригинальные термины, размещенные для левого и правого, как в L = R;тем не менее, он говорит о том, что нужно думать о lvalue как о значении локатора, что примерно означает, что вы можете получить адрес объекта и, следовательно, у этого объекта есть местоположение.

Значение r называется значением значениявыражение, которое может быть литералом, int, с плавающей точкой любое значение.

Итак, в вашем примере левая сторона - это значение Location, в котором будет задано значение выражения правой руки.

0 голосов
/ 14 апреля 2011
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...