 
        
        Спецификация операции (функции)
Integer Division (целочисленное деление)
Вход: два целых значения U и V (данные от клиента)
Предусловие: знаменатель V не может быть равен 0 (необходимое состояние системы перед выполнение операции)
Процесс: разделить U на V (операция Integer Division) (действие, выполняемое с данными)
Выход: значение частного (данные, возвращаемые клиенту)
Постусловие: возникает условие ошибки, если V=0 (состояние системы после выполнения операции)
Переменная в программе имеет:
- 
Имя (k) 
- 
Тип (int) 
- 
Размер (2 байта) 
- 
Значении (13) 
- 
Адрес в памяти ПК 
Int k=13
-215 <= k <= 215-1
Float x=3.3333;
Int k;
K=x; // k=3 – целое число, дробная часть урезается
K=1/3; //k=0 – т.к. целочисленное деление
Данные хранятся в основной памяти ПК
Адрес Память Имя
2000 00000000 K (имя связано с определенным
2001 00001101 участком Памяти)
2000 – адрес 1-го байта k (&k)
Символьный тип char (‘f’)
Char c1, c2=65, c3=’A’; // 65 – ASCII-код символа ‘A’, символы с2 и с3 равны
С1=с2+1 // с1 – получит значение ‘B’, символы кодируются целыми числами 0…255
Для типа char можно использовать операции типа int, на практике используются операции отношений.
Модификаторы типа
Язык СИ позволяет изменять в программе диапазон значений переменных типов int и char с использованием модификаторов:
Unsigned int k; // или unsigned k; 0…65535
Unsigned char ch; //0<=ch<256
Long int L; // или long L; память 4 байта
Unsigned long L; //0…4292967265
Для 32-разрядных ПК тип int и long одинаковы.
Вещественные типы float и double
Вещественные числа хранятся в памяти ПК в экспоненциальном формате:
-2.123Е+5
-2.123 – мантисса
+5 – порядок
Порядок Знак (переносится) Мантисса
8 бит (float 4 байта) 23 бита 6-7 знаков
11 бит (double 8 байт) 52 бита 14-15 знаков
Машинные числа – дискретные точки на числовой оси.
Операции с вещественными числами:
- 
Присваивание 
- 
Бинарные 
- 
Унарные 
- 
Операции отношения 
== - может выполняться неправильно
1.0000 – результат одного выражения
0.9999 – результат другого
Пример некорректного оператора
Float x, y;
X=sqrt(1.3); //1.69
Y=pow(1.69, 0.25);
If (x==y) z=fun (x)
Операции языка Си
Выражение в Си – допустимая комбинация переменных, констант и операций
Допустимо смешение типов, происходит автоматическое (неявное) приведение типов: в бинарной операции «младший» тип приводится к «старшему»
Пример
Int I;
Float x;
Double z,w;
<ввод I, x, z>
W= 2 * x + (I - z);
Int float int double
Float double
double
// явное преобразование типа W=float(2)*x;
Рост старшинства – от целого типа к вещественному и с увеличением размера памяти
Char - int - long - float - double
Порядок выполнения операций:
A= x + y * sin (x + 1 / (x + y));
8 7 6 5 4 2 3 1
Правила использования операций
- 
Для операции определено количество операндов (1, 2, 3) 
- 
Каждая операция может иметь только определенные типы операндов 
- 
Каждая операция имеет ассоциативность – направления выполнения при последовательности операций выполнения 
- 
Каждая операция имеет приоритет (* выполняется раньше +, если нет скобок) 
- 
Унарные операции имеют более высокий приоритет, чем бинарные 
Таблица приоритетов
Операция Ассоциативность
( )
	[]
)
	[]
++ -- ун+ ун- * & sizeof ~(тип)
* / %
+ -
<< >>
< <= > >= сдвиг влево,вправо
== !=
& логические AND, подразрядные
^ XOR
| OR, отрицание (инверсия)
&
 &					логическое
AND
&					логическое
AND 
|| OR
?: операция условие
= +=	-=	*=	/=	%=	!=	^=	<<=	>>=
	+=	-=	*=	/=	%=	!=	^=	<<=	>>=
,
X+=1; // или Х=Х+1, но так медленнее!!!
Приоритет операций
- 
Вызов функции и скобки 
- 
Унарные операции 
- 
Арифметические (бинарные) операции 
- 
Операции отношения (сравнения) 
- 
Логические операции 
