Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АМК_практ_зан.docx
Скачиваний:
5
Добавлен:
20.11.2019
Размер:
530.41 Кб
Скачать

Додаток 1 Пріоритети та асоціативність операцій

Операції

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

Коментар

( ) [ ] . 

Первинні вирази

++ -- sizeof (тип) - ~ ! * &

Унарні операції

* / %

à

Арифметичні мультипликативні

+ -

à

адитивні

<< >>

à

зсуви

< > <= >=

à

Відношення 1

== !=

à

Відношення 2

&

à

Побітове І

^

à

Побітове виключне або

|

à

Побітове або

&&

à

Логічна І

||

à

Логічна або

? :

ß

Умовна

= += -= *= ….

ß

Присвоювання

,

à

Послідовне обчислення

Примітка

à -виконання операцій одного рівня пріоритету зліва направо ,

ß - виконання операцій одного рівня пріоритету справа наліво .

У таблиці операції розташовані у порядку зменшення пріоритету.

Опис операцій

1.Первинні вирази :

24.5 (значення 24.5 типу double) ;

x (значення , неявна операція „ добути значення „ ) ;

тип у описі змінних ;

у[5] (визначення індексу елемента масиву ) ;

( операція у дужках) ;

k.x k x (значення елемента структури ) .

2.Унарні операції та вирази

2.1. ++ , -- збільшення – зменшення на 1 ;

вирази ++ операнд ,- - операнд (операнд спочатку змінюється ,а потім використовується) ,

вирази операнд++ , операнд— ( операнд спочатку використовується,а потім змінюється ).

Програмний приклад:

int x = 0, y = 0, z = 0, w = 0;

z = x++; // z = 0 x = 1

w = ++y; //y = 1 w =1

2.2. sizeof (тип) , sizeof вираз (визначення розміру типу виразу у байтах)

int x; x = sizeof (long); //x = 4

x = sizeof ‘A’ ; //x =1

    1. - арифметичне заперечення ( зміна знака ) ,

+ ( без зміни знака).

    1. ~ побітове логічне заперечення ,інверсія бітів , побітове NOT

int x = 0x0039,j;

j = ~ x; //j = 0xFFC6

2.5. ! логічна операція заперечення , NOT

! true false , !false  true

!(ненульове значення) à 0

!( нульове значення ) à 1

2.6. & взяти адресу

2.7. * взяти значення за адресою

Приклади:

int x = 5 , w; // опис простих змінних

int *ptr; // опис вказівника на змінну цілого типу

ptr = &x; // вказівник отримує адресу змінної х

w = * ptr; // w отримує значення за адресою у

// вказівникові ,w = 5 ,це еквівалент w=x;

2.8. тип(значення) приведення типу

int (5.3) à 5

2.9. new тип визначення місця у динамічній пам’яті

Приклад:

int *ptr; // опис вказівника на змінну цілого типу

ptr = new int; // вказівник отримує місце у динамічній пам’яті

ptr = new int [12]; // вказівник отримує місце у динамічній

// пам’яті для масиву із 12 елементів

2.10. delete ім’я вказівника звільнення місця у динамічній пам’яті

Приклад:

delete ptr;

delete [12] ptr;

3. Бінарні операції та вирази

3.1. * множення (контроль переповнення та зникнення порядку);

/ ділення (контроль ділення на нуль, цілочислове ділення цілих чисел , округлення у напрямку 0 ) ;

% остача від ділення (порівняння за модулем ) (остача від ділення першого операнда на другий , знак остачі як у діленого , контроль ділення на нуль).

Приклади:

10/3 à 3 5%3 à остача 2 -5%3 à остача -2

5%-3 à остача 2 -5%-3 à остача -2

3.2. + додавання ;

- віднімання (переповнення і втрата значущості контролюється тільки для плаваючих типів, для цілих ні ) .

Приклади:

a) int a = 30000 , b = 30000 , c ;

c = a + b ; // c = - 5536 , переповнення ,60000 – 65536=-5536

b) int a = 32767 , b = 32767 , c ;

c = a + b ; //c = -2

на двійковому рівні

0111111111111111 32767

+

0111111111111111 32767

___________________

1111111111111110 -2 ,у доповняльному коді , сума двох додатних чисел від’ємна à переповнення