Операции. Преобразование типов при вычислении выражений.

Agent аватар

Выражения и операции.

Выражение состоит из операндов, операций и круглых скобок. В качестве операндов могут выступать константы, переменные, обращения к функциям и выражения.
Пример: a*(b+c)

Операции.

В зависимости от количества операндов операции делятся на унарные, бинарные и тернарные.

- Унарные операции
Унарный плюс +
Унарный минус -
Взятие адреса &
Разадресация *
Логическое отрицание !
Побитовое отрицание (дополнение) ~

a + ~a = 255;

sizeof()
Размер аргумента в байтах. В качестве аргумента могут выступать либо имя типа, либо выражение.
Пример1:
sizeof(short) = 2
Пример2:
double d;
sizeof(d) = 8;

Инкремент и декремент ++ и --
Увеличивает/уменьшает размер аргумента на 1. Различают префиксное и постфиксное использование этих операций. При префиксном варианте в начале выполняется операция, а затем новое значение участвует в выражении. В постфиксном случае в выражении участвует первоначальное значение, а затем выполняется операция.
Пример1:

int a = 3, b;
b = ++a*2;
//a = 4
//b = 8

Пример2:

int a = 3, b;
b = 2*a++;
//a = 4
//b = 6

- Бинарные операции
Бинарные операции делятся на следующие группы:
1) Мультипликативные
Умножение *
Деление /
Остаток от деления %
Аргумент операции остаток от деления могут быть только целые. Для умножения или деления допустимы целые и вещественные аргументы. Если хотя бы один аргумент вещественный, то результат будет вещественного типа. Если оба аргумента целые, то то и результат целочисленный.
Примеры:
14 % 5 = 4
14 /5 = 2
14 / 5. = 2.8
float f = 14/5; //f = 2.
2) Аддитивные
(Бинарный) плюс +
(Бинарный) минус -
3) Операции сдвига
Сдвиг влево <<
Сдвиг вправо >>
Примеры:
3 << 1 = 6
3 >> 1 = 1
4) Отношения или уравнения
Больше >
Больше или равно >=
Меньше <
Меньше или равно <=
Равно ==
Не равно !=
Результатом операции является 0 или 1
5) Поразрядные
Поразрядное "И" &
Поразрядное "ИЛИ" |
Поразрядное исключающее "ИЛИ" ^
Примеры:
5 & 3 = 1
5 | 3 = 7
5 ^ 3 = 6
6) Логические
Логическое "И" &&
Логическое "ИЛИ" ||
Результат операции - 0 или 1
7) Операция последовательного вычисления ,
Позволяет объединить несколько выражений в одно там, где по синтаксису требуется только одно выражение.
Пример: a++, b++
8 ) Присваивания
Результат операции - присваиваемое выражение.
Различают
Простое присваивание =
Допустимы выражения вида a=b=c=d=8;
Присваивание с...
умножением *=
делением /=
взятием остатка %=
вычитанием -=
сложением +=
сдвигом вправо >>=
сдвигом влево <<=
поразрядным "И" &=
поразрядным "ИЛИ" |=
поразрядным исключающим "ИЛИ" ^=
Пример:
a = a + 5;
a += 5;

- Тернарная операция
выр1 ? выр2 : выр3

Результатом операции является выр2 в случае, если выр1 не равно 0, и выр3 в противном случае.
Пример:
max = a>b ? a: b;

Преобразование типов при вычислении выражений.

При вычислении производится автоматическое преобразование типов аргументов по следующим правилам:
1. float преобразуется в double
2. Если один из аргументов double, то второй тоже преобразуется к нему
3. char и short преобразуются к int
4. unsigned char и unsigned short преобразуются к unsigned int
5. Если один из аргументов long, то второй (целый) тоже преобразуется к long
6. Если один из аргументов unsigned long, то второй (целый) тоже преобразуется к unsigned long

Программист имеет возможность при вычислении выражения задать явное преобразование типов. Для этого перед соответствующим операндом указывается имя нужного типа в скобках.
Пример:

int a = 14, b = 5;
float f;

f = a / b; //f = 2.
f = (float) a / b; //f=2.8

При преобразовании вещественного к целому происходит отбрасывание дробной части.
Пример: (int)3.9 = 3




Rambler's Top100

Яндекс цитирования

© 2008 AgentSoft Project
Based on: ManuScript | Optimized for Drupal :www.SablonTurk.com