Типы данных. Понятие lvalue и rvalue

Понятие lvalue и rvalue.

Для того, чтобы отличать выражения, обозначающие объекты, от выражений, обозначающих только значения были введены понятия lvalue и rvalue. Определение lvalue использовается для обозначения выражений, которые могли стоять слева от знака присваивания (left-value); им противопоставлялись выражения, которые могли находиться только справа от знака присваивания (right-value).

Характерные случаи использования lvalue и rvalue:

rvalue:

- Выражения, обозначающие временные объекты. В частности, результат вызова функций, возвращающих объекты не по ссылке; результат встроенных операций +, -. *, / и т.п.; явное создание временной переменной int() или C(); преобразования не к ссылочным типам и т.д.

- Результат встроенной операции взятия адреса (&) — rvalue типа указатель.

- Результат встроенных постфиксных операций ++, --.

- Литералы за исключением строковых.

- Константы перечислений.

lvalue:

- Выражения, непосредственно обозначающие объект, non-modifiable в случае const-квалификации. Например, имя переменной, параметра функции и т.п.

- Выражения ссылочных типов. non-modifiable в случае const-квалификации. В частности, результат вызова функций, возвращающих объекты по ссылке; выражения, состоящие из имен ссылочных переменных; операции преобразования к ссылочному типу и т.д.

- Результат встроенной операции разыменования (*) — lvalue указуемого типа; non-modifiable в случае const-квалификации.

- Результат встроенных префиксных операций ++, --.

- Имя функции — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на функцию».

- Имя массива — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на первый элемент массива».

- Строковые литералы — non-modifiable lvalue; может быть преобразовано к rvalue «указатель на char/wchar_t».

Типы данных. В языке Си имеются два существенно различных типа данных: int- целый и float - вещественный(с плавающей точкой). Из них можно создавать еще два типа: char - символьный, double - вещественный с двойной точности.

Следует различать тип данных и модификатор типа.

Имеются следующие базовые типы:

- • char (символьный) – занимает 1 байт (8 бит) памяти

- • int (целый) – 2 байта

- • float (вещественный) – 4 байта

- • double (вещественный с двойной точностью) – 8 байт

- • void (пустой тип)

К модификаторам относятся:

- • unsigned (беззнаковый)

- • signed (знаковый)

- • short (короткий)

- • long (длинный)

Тип данных и модификатор типа определяют:

- - формат хранения данных в оперативной памяти (внутреннее представление данных)

- - диапазон значений в пределах которого может изменяться переменная

- - операции которые могут выполняться над данными соответствующего типа

Итак, к данным целого типа относятся следующие типы:

char, int, long int (2 байта), short int (4 байта). Модификаторы signed и unsigned могут предшествовать любому целому типу, но они не обязательны. Они указывают, как интерпретируется старший бит переменной. По умолчанию все переменные целого типа считаются signed, т.е. левый бит интерпретируется как знак.

К вещественным типам данных (с плавающей точкой) относятся:

float, double, long double (10 байт).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: