Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_новое.DOC
Скачиваний:
10
Добавлен:
28.09.2019
Размер:
486.4 Кб
Скачать

4 Операции языка с

Выражение в языке С состоит из операндов и операций, например: C=A+B; A, B, C — операнды; + и = — это операции (сложения и присваивания).

Операции — это действия над данными. Знак операции — это символ или комбинация символов, которые сообщают компилятору о необходимости произвести определенные арифметические , логические или другие действия.

Операции бывают:

  1. унарные, состоящие из одного операнда: A++; -- b;

  2. бинарные, состоящие из двух операндов: A - B;

  3. тернарные — три операнда: (a>b)? a:b; .

Операции можно объединить по группам.

Арифметические операции

Арифметические операции располагаются следующим образом в порядке приоритета:

++ — увеличение на единицу (increment);

--  —  уменьшение на единицу (decrement );

*  — умножение;

/  — деление;

%  — деление по модулю (нахождение дробной части при делении двух чисел;

+  — сложение;

-   — вычитание.

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

//Пример 4.1.

// Арифметические операции +, -, ++, --

#include <stdio.h>

Void main(void)

{

int z,b,sum;

char *format;

format = " z = %d b = %d sum = %d \n";

z = b = 5;

sum = z + b; printf(format,z,b,sum);

sum = z++ + b; printf(format,z,b,sum);

sum = ++z + b; printf(format,z,b,sum);

sum = --z + b; printf(format,z,b,sum);

sum = z-- + b; printf(format,z,b,sum);

sum = z + b; printf(format,z,b,sum);

}

В примере 4.1 показан порядок выполнения операций присвоения, сложения, increment и decrement. Операция присвоения z=b=5; выполняется справа налево; в операторе sum = z++ + b; вначале производится сложение, затем увеличение z на единицу (increment); в операторе sum = ++z + b; первой выполняется операция increment, а затем сложение. Наивысший приоритет имеют операции ( ) и [ ].

//Пример 4.2.

// Операции деления и нахождения остатка от деления

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

#include <stdio.h>

Void main(void)

{

int x,y;

float ratio;

printf("Введите делимое и делитель x y ");

scanf("%d %d",&x,&y);

printf("Целая часть равна %d \n",x/y);

printf("Остаток от деления равен %d\n",x%y);

ratio=x/y;

printf("Результат от деления переменных типа int - целое число %3.2f\n",

ratio);

ratio=(float)x/(float)y;

printf("Результатом деления переменных типа float является вещественное число %3.2f\n",ratio);

}

Возможна более короткая запись операций:

c = c + b; a = a — d; g = g * 3; x = y / 2; z = z % v;

c + = b; a — =d; g * = 3; x / = 2; z % = v; .

Операция деления “/” имеет следующую особенность: если операнды имеют один тип, то результат имеет тот же тип (пример ).

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

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

&& — и (AND);

||  — или (OR);

!  — не (NOT).

В качестве примера операции && можно рассмотреть задачу попадания точки M(x,y) в прямоугольник с координатами (a,b) и центром в начале координат:

//Пример 4.3.

//Логические операции и операции отношения

#include <stdio.h>