- •Вопрос 1
- •Вопрос 2
- •2.4. Константы
- •2.4.1. Целые константы
- •2.4.2. Длинные целые константы
- •2.4.3. Символьные константы
- •2.4.4. Вещественные константы
- •2.4.5. Перечислимые константы
- •2.5. Текстовые константы
- •Вопрос 3
- •2.2. Идентификаторы (имена)
- •2.3. Ключевые слова
- •3.2. Тип
- •Вопрос 4
- •2.3. Данные целого типа
- •Вопрос 5
- •Вопрос 6
- •11.1. Представление символьной строки при помощи одномерного массива
- •11.2. Указатель на символьную строку
- •11.3. Ввод/вывод символьных строк
- •11.4. Массивы символьных строк
- •11.5. Функции работы состроками
- •Вопрос 7
- •3.1. Операции
- •3.1.1. Арифметические операции
- •5.2. Унарные операции
- •5.5. Операции сдвига
- •5.6. Операции отношения
- •5.7. Операции равенства
- •5.8. Побитная операция и
- •5.13. Условная операция
- •3.1.2. Операция присваивания
- •Вопрос 8
- •7.3. Условный оператор if
- •7.7. Оператор выбора switch
- •7.8. Оператор break
- •7.9. Оператор continue
- •7.10. Оператор возврата return
- •6.1.2. Формы оператора if
- •6.1.3. Оператор выбора switch
- •Вопрос 9
- •7.4. Оператор цилка while
- •7.5. Оператор цикла do
- •7.6. Оператор цикла for
- •6.2.1. Оператор while
- •6.2.2. Оператор for
- •6.2.3. Оператор do-while
- •6.3.4. Применение оператора goto и меток
- •Вопрос 11
- •5.2.1. Основные форматы
- •5.2.2. Модификации форматов
- •5.3. Функция форматированного ввода scanf()
- •Вопрос 12
- •12. Работа с файлами в языке c. Функции работы с файлами. Буферизованный ввод-вывод.
- •Вопрос 13
- •1.6.2. Объявления функций
- •1.6.3. Время жизни и область видимости программных объектов
- •1.6.4. Инициализация глобальных и локальных переменных
- •Вопрос 14
- •Вопрос 15
- •Вопрос 16
- •Вопрос 17
- •Вопрос 18
- •Вопрос 19
- •Вопрос 20
5.2. Унарные операции
Выражения с унарными операциями группируются справа налево.
унарное_выражение:
* выражение
& л_значение
- выражение
! выражение
~ выражение
++ л_значение
-- л_значение
л_значение ++
л_значение --
( имя_типа ) выражение
sizeof выражение
sizeof ( имя_типа )
Унарная операция * вызывает "переход к значению"; операнд должен быть указателем, результатом является л_значение, обозначающее объект, на который указывает операнд. Если тип операнда - "указатель на ...", то тип результата - "...".
Результатом унарной операции &; является указатель на объект, который обозначен л_значением. Если типл_значения- "...", то тип результата - "указатель на ...".
Результат унарной операции - равен значению операнда, взятому с противоположным знаком. Выполняются обычные арифметические преобразования. Число, противоположное беззнаковому, вычисляется вычитанием операнда из (2n), где n - число бит в соответствующем знаковом типе.
Унарная операция + отсутствует.
Результат операции логического отрицания ! равен единице, если значение операнда равно нулю, и нулю, если значение операнда ненулевое. Тип результата - int. Операция применима к любому арифметическому типу и к указателям.
Операция ~ дает побитное отрицание своего операнда. Выполняются обычные арифметические преобразования. Тип операнда должен быть целочисленным.
При выполнении префиксной операции ++ объект, который обозначается операндом-л_значением, увеличивается на единицу. Результат равен новому значению операнда, однако он не являетсял_значением. Выражение ++x эквивалентно x += 1. (См. информацию о преобразованиях в пунктах Аддитивные операции и Операции присваивания).
Операнд-л_значениепрефиксной операции -- уменьшается на единицу по аналогии с префиксной операцией ++.
Если к л_значениюприменяется постфиксная операция ++, результатом является объект, обозначенный даннымл_значением. После того как выдан результат, объект увеличивается в точности аналогично префиксной операции ++. Тип результата совпадает с типомл_значения.
Если к л_значениюприменяется постфиксная операция --, результатом является объект, обозначенный даннымл_значением. После того, как выдан результат, объект уменьшается аналогично префиксной операции --. Тип результата совпадает с типомл_значения.
Выражение, которому предшествует заключенное в скобки имя типа, преобразуется к названному типу. Такая конструкция называется явным преобразованием. Имена типов обсуждаются в пункте Имена типов раздела ОПИСАНИЯ.
Операция sizeof выдает размер своего операнда в байтах. (Понятие байта в языке фигурирует только как единица измерения sizeof, однако во всех существующих реализациях байт - это фрагмент памяти, необходимый для хранения символа.) Если операция применяется к массиву, результат равен общему числу байт в массиве. Размер вычисляется по описаниям объектов. Семантически данное выражение является константой типа unsigned и может использоваться повсюду, где требуется константа. В основном описанная конструкция используется при взаимодействии с процедурами, подобными процедурам динамического выделения памяти и ввода/выдода.
Операция sizeof может также применяться к заключенному в скобки имени типа. В этом случае она дает размер в байтах объектов указанного типа.
Конструкция sizeof(тип) считается неделимой, поэтому выражение sizeof(тип)-2 - это то же самое, что и (sizeof(тип))-2.