Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора по яп 2.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
204.42 Кб
Скачать

20. Унарные операции.

&

операция получения адреса операнда

*

операция обращения по адресу, т.е. раскрытия ссылки, иначе операция разыменования (доступа по адресу к значению того объекта, на который указывает операнд). Операндом должен быть адрес

-

унарный минус – изменяет знак арифметического операнда

+

унарный плюс – введен для симметрии с унарным минусом

~

поразрядное инвертирование внутреннего двоичного кода целочисленного аргумента (побитовое отрицание)

!

логическое отрицание (НЕ) значения операнда; применяется к скалярным операндам; целочисленный результат 0 (если операнд ненулевой, т.е. истина)

или 1 (если операнд нулевой, т.е. ложный)

В качестве логических значений используют целые числа :

0 – ложь и не ноль (!0)- истина

Отрицанием любого ненулевого числа будет 0, отрицанием нуля будет 1

Таким образом, !1 равно 0 !2 равно 0

!(-5) равно 0

!0 равно 1

++

увеличение на единицу (инкремент или автоувеличение)

префиксная операция – увеличение значения операнда на 1 до его использования;

постфиксная операция – увеличение значения операнда на 1 после его использования;

Операнд не может быть константой либо другим прадодопустимым выражением. Записи ++5 или 84++ будут неверными.

Операндом не может быть и произвольное выражение. Например, ++(j+k) также неверная запись.

Отметим, что z++; эквивалентно ++z;

Операндом унарных операций ++ и – должны быть всегда леводопустимые выражения, например, переменные (разных типов)

Пример1: int t=1, s=2, z, f;

z=(t++)*5;

Вначале происходит умножение t*5, а затем увеличение t.

В результате получится z=5, t=2.

Пример 2. int t=1, s=2, z, f;

f=(++s)/3;

Вначале значение s увеличивается, а затем делится на 3.

В результате получим s=3, f=1.

--

уменьшение на единицу (декремент или автоуменьшение)

операция, операндом которой не может быть константа или правдодопустимое выражение.

префиксная операция – уменьшение значения операнда на 1 до его использования;

постфиксная операция – уменьшение значения операнда на 1 после его использования;

sizeof

операция вычисления размера (в байтах) для объекта того типа, который имеет операнд.

Разрешены дв аформата операции:

sizeof унарное_выражение и sizeof(тип)

Например, sizeof(int) равно 2

sizeof(float) равно 4

sizeof(char) равно 4

21. Аддитивные и мультипликативные операции.

аддитивные операции

+

бинарный плюс (сложение арифметических операндов или сложение указателя с целочисленным операндом)

-

бинарный минус (вычитание арифметических операндов или указателей)

мультипликативные операции

*

умножение операндов арифметического типа

/

деление операндов арифметического типа.

При целоисленных операндах абсолютное значеие результата округляется до целого.

Например, 20 / 3 равно 6 -20/ 3 равно –6

20/(-3) равно –6

%

получение остатка от деления целочисленных операндов (деление по модулю).

При неотрицательных операндах остаток положительный. В противном случае остаток опеределяется реализацией. У нас:

13 % 4 равно 1

13 %(-4) равно +1

(-13)%4 равно –1

(-13)%(-4) равно –1

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]