2_Operacii_i_vyrazhenija
.pdf
Арифметические операции
* |
var1 * var2 |
умножает одно число на другое: 6*3 будет 18 |
|
/ |
var1 / var2 |
делит одно число на другое: 6/3 результат 2 |
|
+ |
var1 + var2 |
суммирует два числа: 6+3 результат 9 |
|
– |
var1 – var2 |
отнимает от одного числа другое: 6–3 результат 3; |
|
-var |
может использоваться как унарный минус: -a; -5 |
||
% |
var1 % var2 |
возвращает остаток от деления двух чисел: 5% 3 |
|
результат 2; 6% 3 результат 0; 3% 6 результат 3 |
|||
|
|
|
|
++ |
var++ |
увеличивает число на 1: var= 5, var++ результат 5, |
|
побочный эф ф ект var= 6; ++var результат 6, |
|||
++var |
|||
|
побочный эф ф ект var= 6 |
––var–– уменьшает число на 1: var= 5, var–– результат 5, ––var побочный эф ф ект var= 4
11
Особенности арифметических операций в языке Си
Результат операции имеет тот же тип, что и ее операнды, поэтому
5/2 => 2, но 5f/2.0 => 2.5
Операции ++ и -- имеют побочный эффект Операция % применима только к целым числам
12
Задание
Определите значение переменной x
int a = 0; int b = 5; int x;
x = (a++) - 4; x += а % b;
13
Вычисление арифметического выражения
x = (a++) - 4;
? |
0 |
4 |
a:1 |
|
0 |
|
|
-4 |
|
-4 |
x:-4 |
-4 a:1
результат побочный операции эффект
операции
операция
операнд
x |
+= а |
% |
b; |
|
-4 |
1 |
|
5 |
|
|
|
1 |
|
|
14 |
-3 |
x:-3 |
Не пишите выражения, которые вам трудно понять!
x = (a++) - 4; x += а % b;
можно записать так:
x = a – 4; a++;
x = x + a % b;
15
Операции отношения
>var1 > var2 возвращает ИСТИНА, если значение слева больше значения
|
|
|
справа: 3 > 5 будет ЛОЖЬ, 3 > 1 будет ИСТИНА, 3 > 3 будет ЛОЖЬ |
|
|
|
|
>= |
var1 >= var2 |
возвращает ИСТИНА, если значение слева больше значения |
|
справа или равно ему: 3 >= 5 результат ЛОЖЬ; 3 >= 1 результат |
|||
|
|
|
ИСТИНА; 3 >= 3 результат ИСТИНА |
|
|
|
|
< |
var1 < var2 |
возвращает ИСТИНА, если значение слева меньше значения |
|
справа: 3 < 5 результат ИСТИНА; 3 < 1 результат ЛОЖЬ; 3 < 3 |
|||
|
|
|
результат ЛОЖЬ |
|
|
|
|
<= |
var1 <= var2 |
возвращает ИСТИНА, если значение слева меньше значения |
|
справа или равно ему: 3 <= 5 результат ИСТИНА; 3 <= 1 результат |
|||
|
|
|
ЛОЖЬ; 3 <= 3 результат ИСТИНА |
|
|
|
|
|
== var1 == var2 |
возвращает ИСТИНА, если значение слева равно значению |
|
|
справа: 3 = = 5 результат ЛОЖЬ; 3 = = 3 результат ИСТИНА |
||
|
|
|
|
!= |
var1 != var2 |
возвращает ИСТИНА, если значение слева не равно значению |
|
справа: 3 != 5 результат ИСТИНА; 3 != 3 результат ЛОЖЬ |
|||
16 |
|
|
|
|
|
|
|
Операции отношения для вещественных типов данных
Вследствие вычислений возможна потеря или искажение младших разрядов вещественного числа:
float pi = 3.14159; float a = asin(1.0);
2*a == pi; // результат ЛОЖЬ, т.к.
// 3.1415927410125732 != 3.14159
Вещественные результаты необходимо сравнивать с заданной погрешностью:
abs(2*a — pi) < 0.0001;
/* Результат = ИСТИНА, сравнение с точностью 17 до 4-го знака 0.0000026226044 < 0.0001 */
Логические операции
! |
!var1 |
логическое отрицание: !0 результат ИСТИНА; !2 результат |
ЛОЖЬ |
||
|
|
|
&& |
var1 && var2 |
логическое И: 1 && 1 результат ИСТИНА; 2 && 0 результат |
ЛОЖЬ |
||
|
|
|
|| |
var1 || var2 |
логическое ИЛИ: 1 || 1 результат ИСТИНА; 2 || 0 результат |
ИСТИНА; 0 || 0 результат ЛОЖЬ |
||
|
|
|
18
Операции присваивания
переменной слева присваивается значение справа: 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 |
19
Прочие операции
Условная операция
|
|
условная операция – если истинно выражение |
? : |
exp1 ? exp2 : exp3 |
exp1, то выполняется выражение exp2, иначе |
выполняется выражение exp3: |
||
|
|
(x > y)? x : y результат максимум двух значений x |
|
|
и y |
|
|
Вызов функции |
|
|
|
|
|
|
|
|
вызов ф ункции в языке С и считается |
|
|
|
одной из операций, результатом ее |
|
|
|
является возвращаемое значение: |
|
() |
<имя функции>(<параметры>) |
sqrt(4)результат 2.0 |
|
scanf("%d",&x)результат «пустота», |
||
|
|
|
но операция имеет побочный эффект, в |
20 |
|
|
результате которого изменяется |
|
|
переменная x |
|
|
|
|
|
