
- •Данных. Составные структуры данных
- •3.2.1 Общие положения
- •3.2.1.1 Алфавит языка
- •3.2.1.2 Формат программы
- •3.2.1.3. Комментарии
- •// Пример однострочного комментария
- •3.2.1.4 Зарезервированные слова
- •3.2.2 Данные
- •3.2.2.1 Идентификаторы данных
- •3.2.2.2 Типы данных
- •3.2.2.3 Постоянные
- •3.2.2.4 Переменные
- •3.2.2.5 Массивы
- •3.2.2.6 Структуры
- •3.2.2.7 Объединения
- •Масив X:
- •Адреса элементу:
- •Масив y:
- •3.2.2.8 Перечисления
- •3.2.2.9 Указатели
- •Int Hour;
- •Int Press;
- •3.2.2.9.1 Динамическое выделения памяти для хранения данных
- •3.2.2.9.2 Динамическое освобождение памяти от хранимых данных
- •3.2.2.9.3 Ссылка
- •3.2.2.10 Множества
- •3.2.3 Выражения
- •3.2.3.1 Арифметические операции
- •Char int float | signed unsigned | short (базовый) long
- •3.2.3.2 Битовые операции
- •3.2.3.2 Логические операции
- •3.2.3.4 Операции отношения
- •3.2.3.5 Операция присваивания
- •3.2.3.6 Специальные операции
- •3.2.3.7 Элементарные функции
- •3.8 Приведение типов данных
- •3.2.3.9 Приоритеты операций
- •3.2.3.10 Адресные выражения
3.2.3.2 Логические операции
Логической операцией называется операция над данными, возращающая результат логического типа (true или false).
Логическая операция определяется правилом:
логическая операция ::= !(отрицание) | «| |»(логическое сложение) | &&(логическое умножение);
Операция ! (логическое отрицание, читается как «НЕ») – это одноместная операция, результатом выполнения которой является true («истина»), если операнд имеет значение false («ложь») и наоборот. Если, например, X=2 (т.е. не 0 или true), то значением выражения !X является false.
Операция || (логическое сложение, читается как «ИЛИ») – это двухместная операция, результатом выполнения которой является true, если хотя бы один операнд имеет логическое значение true (т.е. не 0); в противном случае результатом выполнения операции является false. Если, например, X=12 (т.е. true) и Y= 0 (т.е. false), то значением выражения X || Y является true.
Операция && (логическое умножение, читается как «И») – это двухместная операция, результатом выполнения которой является true, если оба операнда имеют логическое значение true (т.е. не 0); в противном случае результатом выполнения операции является false. Если, например, X=12 (т.е. true) и Y= 0 (т.е. false), то значением выражения X && Y является false.
3.2.3.4 Операции отношения
Операцией отношения называется двухместная операция сравнения значений операндов, возращающая результат логического типа: true, - если отношение справедливо, или false, – в противном случае.
Операция отношения определяется правилом:
операция отношения ::= «= =»(равно?) | «!=»(не равно?) | <(меньше?) | >(больше?) |
<= (не больше?) | >=(не меньше?);
Название любой их этих операций читается с вопросительной интонацией, например, выражение X = = Y читается как «значение X равно значению Y?»
Следует опасаться довольно распространенной ошибки бездумного копирования в программном коде математического синтаксиса выражения типа Xn X Xk. Для таких составных операций выражение должно записываться в виде: (Xn <= X) && (X <= Xk). В этом легко убедиться. Пусть, например, X=20. Тогда выражение 0 X 10 трактуется как:
true
true
что, естественно, неверно, а выражение:
false
true
даёт верный результат.
3.2.3.5 Операция присваивания
Операцией присваивания называется двухместная операция, предназначенная для присваивания идентифицированному данному некоторого значения.
Операция присваивания определяется правилом:
операция присваивания ::=
(идентификатор данного | адресное выражение), =(присвоить), выражение;
Операция присваивания «=» выполняется в три этапа:
Вычисляется значение выражения.
Тип результата вычисления выражения приводится к типу данного, представленного идентификатором (или адресным выражением) (см. раздел 4.3.10), который записан слева от знака «=».
Результат вычисления выражения присваивается данному, представленному идентификатором (или адресным выражением), который записан слева от знака «=».
Операцию присваивания можно комбинировать с арифметическими и битовыми операциями, например: += (увеличить на ...), <<= (присвоить побитово сдвинутое влево значение) и др.
Примеры:
X = 0 // присвоить X значение 0
X += 5 // если X было равно 4, то он станет равным 9 (эквивалентно X = X + 5)
X *= 3 + 2 // если X было равно 2, то он станет равным 10 (эквивалентно X = X * (3+2)
X = Y = 4 // присваивание переменным X и Y значения 4 (эквивалентно X = (Y = 4)
X = (Y = 5) + 3 // присваивание переменной Y значения 5 и переменной X значения 8