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

M_CI_3

.pdf
Скачиваний:
12
Добавлен:
12.05.2015
Размер:
648.09 Кб
Скачать

Лабораторна робота № 3.

(2 години)

Вирази. Оператори.

Мета роботи: здобуття знань та практичних навичок роботи з виразами різних типів: арифметичними, логічними та порозрядними.

3. Теоретичнi вiдомостi.

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

Вирази представляють собою деяку комбінацію операцій та операндів. Операндами є ті елементи виразу, над якими виконуються операції. Ними можуть бути: константи, змінні (прості змінні, елементи масивів, поля структур та об’єднань, покажчики). Найпростіший вираз складається із одного операнда, і це може служити відправним пунктом для побудови більш складних виразів.

Всім змінним відповідають області пам`яті, з яких можна прочитати і в які можна записати їх значення. Ліводопустимим називається такий вираз, який дозволяє як зчитувати значення об`єкту, який він визначає, так і змінювати його. Назва походить від того, що ліводопустимий вираз може використовуватись в лівій частині виразу присвоєння. Відповідно, праводопустимий вираз може використовуватись тільки в правій частині виразу присвоєння.

Ліводопустимі вирази:

Імена змінних, описані як арифметичні, покажчики, перераховуючі або об`єднання;

Вирази в круглих дужках, причому тоді і тільки тоді коли вираз є ліводопустимим;

Вираз, який визначає поле (expr.field), причому якщо expr теж є ліводопустимим;

Вираз, який задає непрямий вибір поля (expr>field);

Непрямий вираз *expr.

Наступні об`єкти ніколи не можуть бути ліводопустимими:

Ім`я функції;

Ім`я масиву (але елемент масиву або посилання на нього є ліводопустимим);

Константа перераховуючого типу;

Виклик функції.

Мова Сі має сім типів операцій. Далі ми розглянемо арифметичні і логічні операції, операції відношень, заперечення, інкременту та декременту а також порозрядні операції.

3.1. Арифметичні операції.

Операнди, які можуть брати участь в арифметичних операціях повинні мати скалярні типи (цілі та дійсні). Результат операції має той же тип.

 

 

 

 

Таблиця 3.1 Арифметичні операції

 

 

Операція

 

Опис

 

Приклад

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(a + b)

 

 

 

*

 

Множення

 

 

 

 

 

/

 

Ділення

 

(a / b)

 

 

 

 

+

 

Додавання

 

(a + b)

 

 

 

 

 

Віднімання

 

(a - b)

 

 

 

 

%

 

Залишок від ділення

 

(a % b)

 

 

 

 

 

 

 

 

 

 

 

 

 

Приклад 3.1

1:#include <stdio.h>

2:#include <stdlib.h>

3:

29

4:main()

5:{

6:double fredegrees, credegrees;

7:char answer[128];

8:

9:printf("Перетворення градусів по Фаренгейту в градуси по Цельсію\n\n");

10:printf("Градуси по Фаренгейту?: ");

11:gets(answer);

12:fredegrees = atof(answer);

13:credegrees = ((fredegrees - 32.0) * 5.0) / 9.0;

14:printf("Градуси по Цельсію = %f\n ", credegrees);

15:return 0;

16:}

До пріоритетів ми повернемося після розгляду всіх операцій.

3.2. Операції відношень.

Операнди, які можуть брати участь в операціях повинні мати скалярні типи (цілі та дійсні). Результат операції має логічний тип. Логічними значеннями є Істина (True) та

Фальш (False).

Окремого логічного типу в мові Сі не існує. Замість нього використовується тип int, істини – 1, фальші – 0.

 

 

 

Таблиця 3.2 Операції відношень

Знаки операцій

Опис

Приклад

 

 

 

 

<

 

Менше

a < b

<=

 

Менше або дорівнює

a <= b

>

 

Більше

a > b

>=

 

Більше або дорівнює

a >= b

==

 

Дорівнює

a == b

!=

 

Не дорівнює

a != b

 

 

 

 

 

 

 

 

Примітка!

 

 

 

 

 

 

 

Не плутайте операцію рівності == з операцією присвоєння = .

3.3. Логічні операції.

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

 

 

Таблиця 3 Логічні операції

Логічні операції

Значення

Приклад

 

 

 

&&

І

a && b

||

АБО

a || b

!

НЕ

!a

 

 

 

Логічні операції && та || об`єднують вирази відношень у відповідності до правил логічних І та АБО. Приклади:

1:(A < B) && (B < C)

2:(A < B) || (B < C)

Складні логічні вирази обраховуються раціональним способом. Наприклад, якщо при обрахуванні виразу

1: (A <= B) && (B <= C)

30

1: ++i; 2: j = i;
Приклад: 3.2
1: #include <stdio.h> 2: #include <stdlib.h>
3:
4: main()
5: {
6: int a, b, c, v, k;
7: printf("Введіть ціле значення?: ");
8: scanf("%d",&v); 9: k = v;
10: printf("\n\tПеред…Під час…Після\n");
11: v = k; a = v; b = v++; c = v; printf("v++%8d%8d%8d\n",a,b,c); 12: v = k; a = v; b = v--; c = v; printf("v--%8d%8d%8d\n",a,b,c); 13: v = k; a = v; b = ++v; c = v; printf("++v%8d%8d%8d\n",a,b,c); 14: v = k; a = v; b = --v; c = v; printf("--v%8d%8d%8d\n",a,b,c); 15: return 0;
31

виявилось, що А більше В, то подальші обрахунки не будуть проводитись, а значення всього виразу буде дорівнювати Фальші.

3.3.1. Операція заперечення.

Унарна операція заперечення використовується для інвертування значення будь-якого логічного виразу.

Вираз !(A < B) еквівалентний виразу (A > B).

Вираз !(A == B) еквівалентний виразу (A != B).

3.3.2. Операції інкременту та декременту.

Операція інкременту ++ додає до операнда одиницю, а операція декременту -- зменшує операнд на одиницю. Приведені нижче дві пари виразів є еквівалентними по результату (але не по ефективності):

1:і = і + 1;

2:і++;

3:і = і - 1;

4:і --;

Якщо знак операції йде за своїм операндом, то значення виразів і++ та і—-дорівнюють значенню і до модифікації. Іншими словами, операція

1: j = і++;

присвоює змінній значення змінної, яке вона мала до виконання операції інкременту. Наприклад, якщо значення і дорівнює 7, то після виконання операції значення і буде дорівнювати 8 , а значення j буде дорівнювати 7.

Якщо знак операції стоїть перед своїм операндом, то значення виразів ++і та –-і дорівнюють значенню і після модифікації. Іншими словами, операція

2: j = ++і;

присвоює змінній значення змінної, яке вона має після виконання операції інкременту. Наприклад, якщо значення і дорівнює 7, то після виконання операції значення і буде дорівнювати 8 , і значення j буде дорівнювати 8.

Рядок 1 еквівалентний такій послідовності виразів:

1:j = i;

2:i++;

арядок 2 еквівалентний такій послідовності виразів:

16:}

Якщо ви введете, наприклад, значення 8, то програма виведе:

v++

Перед

Під час

Після

8

8

9

v--

8

8

7

++v

8

9

9

--v

8

7

7

3.4. Порозрядні операції.

Таблиця 3.4

Операція

Опис

Приклад

 

 

 

&

І (and)

A & B

|

АБО (or)

A | B

^

Заперечення еквівалентності

A ^ B

<<

Зміщення вліво

A << B

>>

Зміщення вправо

A >> B

~

Заперечення

~A

 

 

 

3.4.1. Відображення значень у двійковому форматі.

Функції Сі (наприклад printf()) відображають значення в будь-яких форматах, але двійкового вони не підтримують. Приведена далі функція display_bits() (розміщена, наприклад, у файлі "SHOW_BIT.C") дозволяє виконати виведення значень у двійковому форматі:

Файл "SHOW_BIT.C"

 

 

 

 

 

 

1:

void display_bits(unsigned n)

6:

bit_position >= 0;

2:

{

 

 

7:

bit_position --)

3:

const int max_position = 15;

8:

printf("%d", n>>bit_position & 1);

4:

int bit_position;

9:

}

5:

for (bit_position = max_position;

10:

 

Програма, яка буде включати файл "SHOW_BIT.C ", повинна включати файл <stdio.h>.

3.4.2. Порозрядний операція І.

Приведений приклад програми пояснює дію операції І.

Приклад: 3.3

1:#include <stdio.h>

2:#include "Show_bit.c"

3:

4: void display_bits(unsigned n);

5:

6:main()

7:{

8:unsigned v1, v2, v3;

9:clrscr();

10:printf("Введіть два цілих числа: , (наприклад: 1021 15)");

11:scanf("%u%u ",&v1, &v2);

12:v3 = v1 & v2;

13: printf("\n

%5u %5#06x ", v1 ,v1); to_bin(v1);

14:printf("\nAND %5u %5#06x ", v2 ,v2); to_bin(v2);

15:printf("\n=================================\n");

16: printf("\n

%5u %5#06x ", v3 ,v3); to_bin(v3);

32

17:return 0;

18:}

Примітка: символ - це пробіл в тексті програми

В таблиці 3.5 приведено правила, за якими діє порозрядний операція І. . Зверніть увагу на директиву в другому рядку. За допомогою цього засобу можна підключити до своєї програми файл show_bit.c, в якому знаходиться функція display_bits().

Таблиця 3.5

A

&

B

==

C

 

 

 

 

 

0

&

0

==

0

0

&

1

==

0

1

&

0

==

0

1

&

1

==

1

 

 

 

 

 

Примітка: А, В та С - значення розряду. Переносу в старший розряд немає.

Програма виведе:

1021 0x03fd 0000001111111101 AND 15 0x000f 0000000000001111

======================================

13 0x000d 0000000000001101

Число 15 в двійковому форматі дорівнює 1111 (без ведучих нулів). Це число (15) називається маскою, а те, що стоїть перед ним і з`єднане знаком порозрядної операції, - операндом. Розряди значення, які відповідають 1 в масці, попадають в результат, а розряди, які відповідають 0, обнуляються в результаті.

3.4.2.Порозрядна операція АБО.

Втаблиці 3.6 приведено дію порозрядної операції АБО.

Таблиця 3.6 Порозрядна операція АБО

A

|

B

==

C

 

 

 

 

 

0

|

0

==

0

0

|

1

==

1

1

|

0

==

1

1

|

1

==

1

 

 

 

 

 

Примітка: А, В та С - значення розряду. Переносу в старший розряд немає.

Приведена нижче програма демонструє дію порозрядної операції АБО.

Приклад: 3.4

1:#include <stdio.h>

2:#include "show_bit.c"

3:

4: void display_bits(unsigned n);

5:

6:main()

7:{

8:unsigned v1, v2, v3;

9:printf("\nВведіть два цілих числа, наприклад: 1021 15\n");

10:scanf("%u%u",&v1,&v2);

11:v3 = v1 | v2;

12: printf("\n

%5u %#06x ",v1, v1); display_bits(v1);

13:printf("\nOR %5u %#06x ",v2, v2); display_bits(v2);

14:printf("\n=================================\n ");

15: printf("\n

%5u %#06x ", v3 ,v3); display_bits(v3);

33

16:return 0;

17:}

Результат роботи програми:

1021 0x03fd 0000001111111101 OR 15 0x000f 0000000000001111

=================================

1023 0x03ff 0000001111111111

Як видно, результат в двійковому форматі має всі встановлені в "1" розряди превинного числа (1021), плюс нові одиничні розряди із маски (15). Таким чином одиниці із маски будуть включені в значення результату для будь-якого значення операнда.

Нульові розряди маски дозволяють попасти в результат перевинним розрядам операнда.

3.4.2. Порозрядна операція заперечення еквівалентності (eXclusive OR).

Ця операція має такі назви: заперечення еквівалентності, додавання по модулю два. A XOR B істинне тоді і тільки тоді, коли значення A і B не співпадають.

В таблиці 3.7 приведено дію порозрядної операції XOR.

Таблиця 3.7. Порозрядна операція заперечення еквівалентності

A

^

B

==

C

 

 

 

 

 

0

^

0

==

0

0

^

1

==

1

1

^

0

==

1

1

^

1

==

0

 

 

 

 

 

Приклад: 3.5

1:#include <stdio.h>

2:#include "e:\c_pp\show_bit.c"

3:

4: void display_bits(unsigned n);

5:

6:main()

7:{

8:unsigned v1, v2, v3;

9:printf("\nВведіть два цілих числа, наприклад: 1021 15\n");

10:scanf("%u%u",&v1,&v2);

11:v3 = v1 ^ v2;

12: printf("\n

%5u %#06x ",v1, v1); display_bits(v1);

13:printf("\nXOR %5u %#06x ",v2, v2); display_bits(v2);

14:printf("\n=================================");

15:

printf("\n

%5u %#06x ", v3 ,v3); display_bits(v3);

16:

return 0;

 

17:

}

 

Результат роботи програми після введення двох чисел 45000 і -1 буде мати вигляд (поскільки число -1, як знакове 16-ти бітне має вигляд : 0xffff, і такий же вигляд має і беззнакове v2, яке приймає значення 65535).

XOR

45000

0xafc8

1010111111001000

65535

0xffff

1111111111111111

=====================================

 

20535

0x5037

0101000000110111

При

використанні числа 65535 (0xffff 1111111111111111) в якості маски, в

двійковому представленні всі нулі операнда перетворяться в одиниці результату і навпаки.

34

Тобто, всі біти операнду перемкнуться на протилежні. Якщо тепер в якості операнда взяти

результат попередньої операції, то в результаті одержимо:

 

 

 

 

 

XOR

20535

0x5037

 

0101000000110111

 

 

 

 

 

 

65535 0xffff

 

1111111111111111

 

 

 

 

 

 

======================================

 

 

 

 

 

 

 

 

45000 0xafc8

 

1010111111001000

 

 

 

 

 

 

 

 

Це справедливо для будь-якої маски. Тобто, якщо виконуються дві рівності :

 

 

 

 

С = A ^ B та D = C ^ B;

 

 

 

 

 

 

 

 

 

 

то справедлива і рівність A = D.

 

 

 

 

 

 

 

 

 

 

 

 

 

7

6

 

 

5

4

3

2

 

1

0

 

 

 

 

 

 

 

 

3. 4.3 Зсув ліворуч.

 

 

 

 

 

 

 

 

 

 

 

 

Операція

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 0 1 0 1

1 0 1

 

 

 

 

 

3

 

C = A << B;

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

присвоює змінній С значення змінної А,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

зсунуте на В бітів ліворуч. Наприклад,

 

 

 

 

7

 

6

5

4

3

 

2

1

 

0

 

 

якщо А =

173, В

= 3, то в результаті

 

 

 

 

 

0

 

1

1

0

1

 

0

0

 

 

0

 

0

операції ми одержимо значення С

=

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1384. Механізм дії операції зсуву бітів

 

 

 

 

C

 

 

 

C = A <<B;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

праворуч

при

вказаних

значеннях

 

 

 

 

 

 

 

 

Рис. 3.1

 

 

 

 

 

 

 

 

 

операндів

показано на

рис.

3.1.

Код

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

програми

і результат її

дії

приведено

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нижче.

Приклад: 3.6

1:#include <stdio.h>

2:#include "e:\c_pp\show_bit.c"

3:

4: void display_bits(unsigned n);

5:

6:main()

7:{

8:unsigned v1, v2, v3;

9:printf("\nВведіть два цілих числа, наприклад: 1021 15\n");

10:scanf("%u%u",&v1,&v2);

11:v3 = v1 << v2;

12: printf("\n

%5u %#06x ",v1, v1); display_bits(v1);

13:printf("\n<< %5u %#06x ",v2, v2); display_bits(v2);

14:printf("\n=================================");

15:

printf("\n

%5u %#06x ", v3 ,v3); display_bits(v3);

16:

return 0;

 

17:

}

 

1730x00ad 0000000010101101

<<3 0x0003 0000000000000011

=================================

1384 0x0568 0000010101101000

В двійковому представлені зсув бітів вліво на В розрядів еквівалентно множенню первинного значення на 2В (це справедливо і для інших систем числення). Така операція множення є найшвидшою операцією множення на 2n, де n - ціле число.

35

 

 

 

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

1

0

1

1

0

0

1

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

B

 

7

6

5

4

3

2

1

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

0

0

0

0

1

0

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

 

 

 

 

C = A >>B;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис. 3.2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нижче.

3.4.4. Зсув праворуч.

Операція

C = A >> B;

присвоює змінній С значення змінної А, зсунуте на В бітів праворуч. Наприклад, якщо А = 89, В = 3, то в результаті операції ми одержимо значення С = 11. Механізм дії операції зсуву бітів праворуч при вказаних значеннях операндів показано на рис. 3.2. Код програми і результат її дії приведено

Приклад: 3.7

1:#include <stdio.h>

2:#include "e:\c_pp\show_bit.c"

3:

4: void display_bits(unsigned n);

5:

6:main()

7:{

8:unsigned v1, v2, v3;

9:printf("\nВведіть два цілих числа, наприклад: 1021 15\n");

10:scanf("%u%u",&v1,&v2);

11:v3 = v1 >> v2;

12: printf("\n

%5u %#06x ",v1, v1); display_bits(v1);

13:printf("\n>> %5u %#06x ",v2, v2); display_bits(v2);

14:printf("\n=================================");

15:printf("\n %5u %#06x ", v3 ,v3); display_bits(v3);

16:return 0;

17:}

Програма виведе:

89 0x0059 0000000001011001 >> 3 0x0003 0000000000000011

=================================

11 0x000b 0000000000001011

3.4.5. Доповнення до одиниці.

Операція порозрядного доповнення до одиниці, представлена символом ~ (в математиці - тильда), перемикає всі біти операнда з 1 на 0, і навпаки з 0 на 1. Доповнення до 1 - це унарна операція. Унарна операція ~ може використовуватись для порозрядного заперечення

двійкових значень. Приклад:

A = ~ B;

Приведена нижче програма демонструє дію операції ~.

Приклад: 3.8

1:#include <stdio.h>

2:#include "e:\c_pp\SHOW_BIT.C"

3:

4: void display_bits(unsigned n);

5:

36

%5d %#06x ",v1, v1);display_bits(v1);

6:main()

7:{

8:unsigned v1, v2;

9:printf("\nВведiть цiле число:\n");

10:scanf("%u",&v1);

11:v2 = ~ v1;

12: printf("\n

13:printf("\n================================== ");

14:printf("\nCOMP %5d %#06x ", v2 ,v2);display_bits(v2);

15:return 0;

16:}

Доповнення до одиниці є двійковою логічною операцією і має два основних призначення: інвертування значень "істина" та "фальш", а також перетворення від`ємних значень в додатні і навпаки. Якщо при виконанні програми ввести -45, то результат

виконання програми буде таким:

-45 0xffd3 1111111111010011

=====================================

COMP

44 0x002c

0000000000101100

Якщо тепер до результату 44 додати 1, то ми одержимо 45, тобто додатне число. При введенні числа 45 ми одержимо такий результат:

45 0x002d 0000000000101101

====================================

COMP -46 0xffd2 1111111111010010

Додавши 1 ми одержимо -45. Таким чином, для перетворення від`ємних чисел в додатні, і навпаки, необхідно до аргументу застосувати операцію доповнення до одиниці, а потім до результату додати 1 (звідси і назва операції). Дія цієї операції еквівалентна операції заперечення еквівалентності над операндом з використанням в якості маски значення 1111111111111111 (або 65535 в десятковій і FFFF В шістнадцятковій системах числення відповідно).

При введенні "0" ми одержимо:

0 0х0000 0000000000000000

==================================

COMP -1 0xffff 1111111111111111

При введенні "-1" ми одержимо:

-1 0xffff 1111111111111111

==================================

COMP

0 0х0000 0000000000000000

При введенні "1" ми одержимо:

1

0x0001

0000000000000001

==================================

COMP -2

0xfffe

1111111111111110

Як бачимо, ~0 є "істина" (будь-яке ненульове значення), але застосування цієї операції до довільного не нульового значення, не завжди дає "фальш" ("0").

3.5 Операції присвоєння.

Про праводопустимі та ліводопустимі вирази ми вже говорили. Два операнди: ліводопустимий та праводопустимий та знак операції "=", є виразом присвоєння. І цей вираз має значення. Тому вираз присвоєння є ліводопустимим. Тобто вираз:

C = A = B;

правильний. Так можна ініціювати кілька змінних однакового типу однаковими константами:

C = A = B = 45;

37

3.5.1. Скорочені операції присвоєння.

Звична операція присвоєння

A = A + 45;

не є раціонально побудованою. В цьому виразі є два звертання до змінної А, що потребує подвійного обчислення адреси змінної А (один раз для знаходження значення змінної, другий - для запису значення виразу А + В).

Попередній вираз можна записати так:

A += 45;

Такий запис операції присвоєння допоможе компілятору генерувати більш раціональний код. Скорочений запис вказує компілятору взяти значення 45 додати до нього значення змінної А і запам`ятати його знову таки в змінній А.

Далі приведено повний перелік операцій присвоєння:

*=, /=, +=, -=, %=, <<=, >>=, &=, ^= i |=.

Кожен з них дозволяє звести символічний запис виразу (псевдокод)

i = i op j;

 

до більш короткого псевдокоду:

 

i op= j;

 

Приклади виразів:

count = count + 10;

count += 10;

count *= 2;

count = count * 2;

count /= 3;

count = count / 3;

count %= 16;

count = count % 16;

3.6.Пріоритети операцій.

Вскладних виразах операції з більш високим пріоритетом виконуються раніше операцій

збільш низьким пріоритетом (таблиця 3.8). Одні операції виконуються зліва - направо, інші справа - наліво. Ця властивість називається асоціативністю.

Для того, щоб не запам`ятовувати пріоритети, потрібно використовувати круглі дужки. Їх кількість не впливає на швидкість виконання операцій, а програма стає більш зрозумілою.

Таблиця 3.8. Пріоритети операцій

 

Рівень

 

 

 

 

Операції

Порядок

 

пріоритету

 

 

 

 

 

 

обчислень

 

 

 

 

 

 

 

 

 

 

1

()

.

[

]

->

 

Зліва направо

 

2

*

&

! ~

++

-- +

- (тип)sizeof

Справа наліво

 

3

*

/

%

 

 

 

Зліва направо

 

4

+

-

 

 

 

 

Зліва направо

 

5

<<

>>

 

 

 

 

Зліва направо

 

6

<

<=

>

>=

 

 

Зліва направо

 

7

==

!=

 

 

 

 

Зліва направо

 

8

&

 

 

 

 

 

Зліва направо

 

9

^

 

 

 

 

 

Зліва направо

 

10

|

 

 

 

 

 

Зліва направо

 

11

&&

 

 

 

 

 

Зліва направо

 

12

| |

 

 

 

 

 

Зліва направо

 

13

?:

 

 

 

 

 

Справа наліво

 

14

*=, /=, +=, -=, %=, <<=, >>=, &=, ^= i |=

Справа наліво

 

15

,

 

 

 

 

 

Зліва направо

 

 

 

 

 

 

 

 

 

Приклад використання круглих дужок:

y = (a * x + b) / (x + c);

y = ((a * x) + b) / (x + c);

38

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]