Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2_Operacii_i_vyrazhenija

.pdf
Скачиваний:
17
Добавлен:
14.03.2016
Размер:
216.65 Кб
Скачать

Прочие операции

Операция определения размера занимаемой памяти

 

sizeof(var)

возвращает размер памяти в байтах, занимаемый

sizeof

переменной или типом данных:

sizeof(<тип>)

sizeof(short int) результат 2;

 

 

short int mass[100], sizeof(mass) результат 200

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

 

 

преобразует значения выражения к указанному типу в

 

 

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

 

(<тип>)<выражение>

эф ф ектов (т.е. значение переменной а в примере не

 

(float)2 результат 2.0

 

 

изменится):

 

 

(int)a результат целое число, полученное после

21

 

отбрасывания дробной части у переменной а

 

 

Преобразование типов в выражениях

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

Пример: выражение

2.5 + 3

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

22

Преобразование типов в выражениях

Неявные преобразования – это преобразования, результат которых всегда успешен и не приводит к потере точности данных; автоматически выполняются компилятором

Явные преобразования – это разрешенные преобразования, успех которых не гарантируется или может приводить к потере точности; явно задаются про-

23 граммистом

Неявные преобразования типов в выражениях

char

short int

int

long int

unsigned char

unsigned short int

unsigned int

unsigned long int

float

double

long double

Наличие пути говорит лишь о существовании преобразова- 24 ния, а само преобразование выполняется только один раз

Задание

Определите значение переменной x

int a = 0; int b = 5; int x = 2;

x = 4 - (++a) + (float)b/x;

25

Явные и неявные приведения типов

x = 4 - (++a) + (float)b / x;

2

4

0

5

2

 

 

1

5.0

2.0

 

 

a:1

2.5

 

 

 

 

 

3

 

 

 

 

3.0

 

 

 

 

5.5

 

 

26

5

5 x:5

 

 

операция

неявное

приведение

типа

операнд

-4

результат

операции

a:1

побочный

эффект

операции

Это надо помнить!

Простейший оператор языка Си состоит из выражения, заканчивающегося точкой с запятой.

Некоторые операции могут изменять свои операнды

Деление целых чисел всегда дает в результате целое число

27

Ошибки при компиляции

can not convert '<тип 1>' to '<тип 2>' - вы пытаетесь использовать операцию с неподходящими типами данных (тип 1 использовали вы, в то время как надо было использовать тип 2)

'=': left operand must be l-value — слева от операции присваивания стоит что-то, чему нельзя присваивать (не l-value-выражение)

'++' needs l-value — операция ++ (--) должна выполняться только над тем, что можно изменить (l-

28 value-выражение)

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