Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Техн.прогр.в.2.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
962.56 Кб
Скачать

1.4. Операции Арифметические

Примечание: в данном разделе x,y – некоторые переменные, a,b – некоторые выражения, символ → обозначает результат операции

a+b; a-b; a*b; a/b – соответственно сложение, вычитание, умножение, деление.

a%b ­– остаток от деления

-a; +a – унарные минус и плюс.

Если оба операнда целочисленные, результат тоже целочисленный, если хотя бы один из операндов вещественный – результат вещественный.

ВНИМАНИЕ при делении целочисленных операндов результат также целочисленный. Например, 5/2 2. Следует записать «5./2» или «5/2.».

a<<b, a>>b - сдвиги операнда а на b двоичных разрядов влево / вправо.

a&b – поразрядное логическое И (например, 10012 & 11002 → 10002)

a|b – поразрядное логическое ИЛИ

a^b – поразрядное логическое исключающее ИЛИ (XOR)

~a – логическое поразрядное отрицание

Присваивание

x=a;

Присваивания является операцией и имеет возвращаемое значение, что позволяет использовать её в составных выражениях.

Примеры: y=x=9;      5+(x=4) → 9

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

На базе арифметических операций определены особые формы присваивания, например:

x+=a – тоже, что и x=x+a.

аналогично определены операции x-=a, x*=a, x/=a, x%=a, x&=a, x|=a, x^=a, x<<=a, x>>=a.

Логические

В языке «С» результатом логической операции является целое число: «1», если результат истинен, и «0», если ложен.

a&&b, a||b - логические И и ИЛИ

!a – логическое общее отрицание

Например, 5&&3 → 1 (в значении ИСТИНА), 8||0 → 1, 5&&0 → 0.

Отношения

a<b ,a>b, a<=b,a>=b – операции, сравнивающие значения

a= =b – проверка на равенство (например, 5==3 → 0, 4==4 → 1)

a!=b – проверка на неравенство

ВНИМАНИЕ. Частой ошибкой является использование операции присваивания (=) вместо проверки на равенство (==). В этом случае компилятор выдает предупреждение, но не ошибку.

Операции работы с указателями

&x – взятие адреса

*x – разыменовывание указателя (обращение по адресу)

Более подробно данные операции будут рассмотрены в разделе «Указатели»

Инкремент и декремент

++x, --x – значение x увеличивается или уменьшается на 1, затем используется в выражении.

x++ ,x-- – предыдущее значение x используется в выражении, а затем увеличивается/уменьшается на 1.

Примеры (в каждом примере изначально x=3):

  1. (++x)+6 → 10, (x++)+6 → 9 (в обоих случаях в результате x=4)

  2. (++x) + (++x) → 9

  3. (x++) + (x++) → 7

Операция «последовательное вычисление»

a,b – вычисляет выражение a, затем выражение b, возвращает b.

Пример (объявлены целочисленные переменные x,x1,x2,x3):

x = (x1=4+6, x2=x1-2, x3=x2+7)

В результате: x1=10, x2=8, x3=15, x=15.

Операция «условие»

x?a:b - возвращает a, если х истинно, иначе возвращает b.

Пример:

(5>2?4:6) → 4, (8<3?5:9) → 9, 5+(7>3?5:2) → 10

Операция sizeof

sizeof(<тип данного/имя переменной>) – возвращает размер (в байтах), занимаемый данной переменной или типом данных.

sizeof(short) → 2

Приоритет и ассоциативность операций

Операция

Ассоциативность

Приоритет

приоритетные скобки

слева направо

17

x[b],f(…), x.a, x->a, ++x, --x

слева направо

16

x++, x--, sizeof(x), ~a, !a, +a, -a, &x, *a

справа налево

15

приведение типа

справа налево

14

a*b, a/b, a%b

слева направо

13

a+b, a-b

слева направо

12

a<<b, a>>b

слева направо

11

a<b, a<=b, a>b, a>=b

слева направо

10

a==b, a!=b

слева направо

9

a&b

слева направо

8

a^b

слева направо

7

a|b

слева направо

6

a&&b

слева направо

5

a||b

слева направо

4

a?b:c

справа налево

3

все виды присваивания

справа налево

2

a,b

справа налево

1

Большое количество уровней приоритетов операций позволяет строить достаточно сложные выражения без использования скобок. Но для улучшения читаемости скобки всё-таки рекомендуется использовать.