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

Тема № 2. Выражения и операции языка

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

&

&c_Symb – адрес в памяти значения переменной c_Symb

*

+

~ побитовое отрицание 0001 1100  1110 0011

! логическое отрицание 0  1, не 0  0.

++

int result, arg=2;

result = ++arg;

result примет значение 3.

int result, arg=2;

result = arg++;

––

sizeof операция вычисления размера операнда (в байтах)

sizeof(char) = 1

sizeof(long) = 4

short Count;

sizeof(Count) = 2

Бинарные операции

+

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

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

*

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

/

деление операндов арифметического типа. При целочисленных операндах абсолютное значение результата округляется до целого. 20/3 = 6 и (-20)/3 = -6

%

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

14%3 = 2 и (–14)%3 = –2

float res;

res = 5/4;

Результат: res = 1

float res;

res = 5./4.;

Результат: res = 1.25

<<

short res, Value = 12;

res = Value << 5;

12 = 0000 0000 0000 1100 – Результат: 0000 0001 1000 0000 = 0x180 =256+128 = 384

12 * 25 = 12 * 32 = 384

>>

short res, Value = 1120;

res = Value >> 5;

1120 = 1024 + 96 = 1024 + 64 + 32 = 210 + 26 + 25 = 0000 0100 0110 0000

– Результат: 0000 0000 0010 0011 = 0x23=32+3 = 35

1120 / 25 = 1120 / 32 = 35

&

поразрядная конъюнкция (И)

0&0 = 0

1&0 = 0

0&1 = 0

1&1 = 1

|

поразрядная дизъюнкция (ИЛИ)

0|0 = 0

1|0 = 1

0|1 = 1

1|1 = 1

^

поразрядное исключающее ИЛИ

0^0 = 0

1^0 = 1

0^1 = 1

1^1 = 0

<

меньше, чем

>

больше, чем

<=

меньше или равно, чем

>=

больше или равно, чем

==

равно

!=

не равно

&&

конъюнкция (И)

||

дизъюнкция (ИЛИ)

4 < 9 1

3 == 5 0

3 != 5 || 3==5 1

(3+4>5) && (3+5>4) && (4+5>3) 1

А = B*2; - присвоить А результат вычисления выражения B*2

X = XY; - то же в записи составного присваивания: X =Y

+ – * / % << >> & | ^

f += 5; d –= f*2; con ^= 0xff71;

Операции выбора компонентов структурированного объекта

. ->

Запятая в качестве операции

int x,y;

y = (x=3, 3*x); (после операции х=3, y=9).

Скобки в качестве операций

<имя функции> (<список аргументов>)

<имя массива> [<индекс>]

Условная трехместная операция

<выражение_1> ? <выражение_2> : <выражение_3>

x_abs = x < 0 ? –x : x;

Операция явного преобразования типа

(<имя типа>) <операнд>

int i_x;

double f_y= 1.25;

i_x = (int)f_y;

1. Все короткие целые типы преобразуются в типы не меньшей длины в соответствии со следующей таблицей:

Исходный тип

Преобразованный тип

Правила преобразований

char

int

Расширение нулем или знаком

unsigned char

int

Старший байт заполняется нулем

signed char

int

Расширение знаком

short

int

Сохраняется то же значение

unsigned short

unsigned int

Сохраняется то же значение

enum

int

Сохраняется то же значение

битовое поле

int

Сохраняется то же значение

2. Если один из операндов имеет тип long double, то второй тоже будет преобразован в long double.

3. Если п.2 не выполняется и один из операндов есть double, то второй тоже будет преобразован в double.

4. Если пп.2 и 3 не выполняются и один из операндов есть float, то второй тоже будет преобразован к типу float.

5. Если пп.2 – 4 не выполняются (оба операнда целые) и один из операндов есть unsigned long int, то второй тоже будет преобразован к типу unsigned long int.

6. Если пп.2 – 5 не выполняются и один из операндов есть long, то второй тоже будет преобразован к типу long.

7. Если пп.2 – 6 не выполняются и один из операндов есть unsigned, то второй тоже будет преобразован к типу unsigned.

8. Если пп.2 – 7 не выполняются, то оба операнда имеют тип int.

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