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

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

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

Задание

Определите результат выражения

int x = 2;

x = (x == x == x);

11

Результат арифметического выражения

x = (x == x == x);

 

 

0

 

 

x:0

возвращаемое

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

2

 

2

2

 

побочный

 

 

значение операции

 

 

 

 

 

 

 

 

 

 

 

эффект

 

 

1

 

 

 

 

 

 

 

операции

 

 

 

 

 

операция

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

операнд

 

 

 

 

 

 

 

 

0

0 x:0

12

Свойства операций

Арность операции - это количество ее операндов: унарная, бинарная, тернарная (трехместная)

Например:

! – унарная операция - !a;

+ - бинарная операция - a + b;

? : - трехместная операция - a>b ? a+b : b;

13

Свойства операций

Типы операндов — операция выполняется над операндами только заданного типа. Например, операция целочисленного деления % применима только к целым числам

Возможно существование нескольких версий одной операции, каждая из которых применима к определенному типу данных. Например, операция умножения + применима ко всем скалярным типам данных, т.е. int + int, float + float, double + double и

14 т.д.

Свойства операций

Приоритет операции — определяет порядок выполнения операций: высокий, средний, низкий. Например, операция деления / имеет более высокий приоритет, чем операция присваивания =

Ассоциативность операции — определяет порядок вычисления операций с одинаковым приоритетом: слева-направо, справа-налево

15

Приоритет и ассоциативность операций

 

 

 

 

 

Операция

 

 

Ассоциативность

 

[]

() .

 

->

а++

а--

 

 

 

слева направо

 

++а

--a

~

!

унарная *

&

+

- sizeof

справа налево

 

(<тип>)

 

 

 

 

 

 

 

справа налево

 

бинарная *

/

%

 

 

 

 

слева направо

 

+

-

 

 

 

 

 

 

 

слева направо

 

<<

>>

 

 

 

 

 

 

 

слева направо

 

<

>

<=

 

>=

 

 

 

 

слева направо

 

==

!=

 

 

 

 

 

 

 

слева направо

 

&

 

 

 

 

 

 

 

 

слева направо

 

^

 

 

 

 

 

 

 

 

слева направо

 

|

 

 

 

 

 

 

 

 

слева направо

 

&&

 

 

 

 

 

 

 

 

слева направо

 

||

 

 

 

 

 

 

 

 

слева направо

 

? :

 

 

 

 

 

 

 

 

справа налево

 

=

+=

-

+

*=

/=

%=

&=

^=

 

16

|=

<<=

 

>>=

 

 

 

 

 

справа налево

,

 

 

 

 

 

 

 

 

слева направо

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

*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

17

Особенности арифметических операций в языке Си

Результат операции имеет тот же тип, что и ее операнды, поэтому

5/2 => 2, но 5f/2.0 => 2.5

Операции ++ и -- имеют побочный эффект Операция % применима только к целым числам

18

Задание

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

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

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

19

Вычисление арифметического выражения

x = (a++) -

4;

?

0

4

a:1

0

 

 

-4

 

-4 x:-4

20

-4 a:1

возвращаемое значение операции побочный

эффект

операции

операция

операнд

x += а % b;

 

 

 

 

 

 

-4

1

5

 

 

 

 

1

 

 

 

-3 x:-3