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

Лекции по проге / 02_Операции и выражения (1)

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

Не пишите выражения, которые вам трудно понять!

x = (a++) - 4; x += а % b;

можно записать так:

x = a – 4; a++;

x = x + a % b;

21

Операции отношения

 

 

возвращает ИС ТИНА, если значение слева больше

>

var1 > var2

значения справа: 3 > 5 будет ЛО Ж Ь , 3 > 1 будет ИС ТИНА,

 

 

3 > 3 будет ЛО Ж Ь

 

 

 

 

 

возвращает ИС ТИНА, если значение слева больше

>=

var1 >= var2

значения справа или равно ему: 3 >= 5 результат ЛО Ж Ь ; 3

 

 

>= 1 результат ИС ТИНА; 3 >= 3 результат ИС ТИНА

 

 

 

 

 

возвращает ИС ТИНА, если значение слева меньше

<var1 < var2 значения справа: 3 < 5 результат ИС ТИНА; 3 < 1

 

 

результат ЛО Ж Ь ; 3 < 3 результат ЛО Ж Ь

 

 

значения справа или равно ему: 3 <= 5 результат

<=

var1 <= var2

ИС ТИНА; 3 <= 1 результат ЛО Ж Ь ; 3 <= 3 результат

 

 

ИС ТИНА

 

 

возвращает ИС ТИНА, если значение слева равно

==

var1 == var2

значению справа: 3 = = 5 результат ЛО Ж Ь ; 3 = = 3

 

 

результат ИС ТИНА

22

Операции отношения для вещественных типов данных

Вследствие вычислений возможна потеря или искажение младших разрядов вещественного числа:

float pi = 3.14159; float a = asin(1.0);

2*a == pi; // результат ЛОЖЬ, т.к.

//3.1415927410125732 != 3.14159

Вещественные значения необходимо сравнивать с заданной погрешностью:

abs(2*a — pi) < 0.0001;

/* Результат = ИСТИНА, сравнение с точностью до 23 4-го знака 0.0000026226044 < 0.0001 */

Логические операции

!

!var1

логическое отрицание: !0 результат ИСТИНА; !2 результат

ЛОЖЬ

 

 

 

 

 

&&

var1 && var2

логическое И: 1 && 1 результат ИСТИНА; 2 && 0 результат

ЛОЖЬ

 

 

 

||

var1 || var2

логическое ИЛИ: 1 || 1 результат ИСТИНА; 2 || 0 результат

ИСТИНА; 0 || 0 результат ЛОЖЬ

 

 

 

24

Операции присваивания

переменной слева присваивается значение справа: var = 5

=var1 = var2 результат 5; возможно многократное присваивание,

 

 

которое выполняется справа-налево: var1 = var2 = 5

 

 

 

*=

var1 *= var2

умножает значение переменной, указанной слева, на

значение указанное справа: var = 5, var *= 2 результат 10

 

 

 

 

 

/=

var1 /= var2

делит значение переменной, указанной слева, на значение,

указанное справа: var = 6, var /= 2 результат 3

 

 

 

 

 

+=

var1 += var2

добавляет значение, указанное справа, к значению

переменной, указанной слева: var = 6, var += 2 результат 8

 

 

 

 

 

–=

var1 –= var2

отнимает от значение переменной, указанной слева,

значение, указанное справа: var = 6, var –= 2 результат 4

 

 

 

 

 

 

 

присваивает переменной, указанной слева, остаток,

%=

var1 %= var2

получаемый в результате деления исходного значения этой

переменной на значение, указанное справа: var = 6,

 

 

 

 

var %= 4 результат 2

25

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

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

условная операция – если истинно выражение exp1,

то выполняется выражение exp2, иначе выполняется

? : exp1 ? exp2 : exp3 выражение exp3:

(x > y)? x : y результат максимум двух значений x и y

Вызов функции

 

 

 

 

 

 

 

вызов функции в языке Си считается одной

 

 

 

из операций, результатом ее является

 

 

 

возвращаемое значение:

 

()

<имя функции>(<параметры>)

sqrt(4) результат 2.0

 

scanf("%d",&x) результат «пустота», но

 

 

 

операция имеет побочный эффект, в

26

 

 

результате которого изменяется

 

 

переменная x

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

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

возвращает размер памяти в байтах, занимаемый sizeof sizeof(var) переменной или типом данных:

sizeof(<тип>) sizeof(short int) результат 2;

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

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

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

значение переменной а в примере не изменится): (<тип>)<выражение> (float)2 результат 2.0

(int)a результат целое число, полученное после отбрасывания дробной части у переменной а

27

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

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

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

2.5 + 3

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

28

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

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

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

29 граммистом

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

char

short int

int

long int

unsigned char

unsigned short int

unsigned int

unsigned long int

float

double

long double

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