Операції зменшення і збільшення в мові С

Главная » Каталог статей » Статьи на украинском » Програмування » Операції зменшення і збільшення в мові С

В мові С є дві операції збільшення і зменшення на 1. Незвичайний аспект цих операцій полягає в тому, що операції ++ і – – можна використовувати як префіксні операції, тобто ++n, – –n, так як постфіксні операції, тобто n++, n– –. Ефект в обох випадках один і той самий, збільшення n на 1. Але ++n, збільшення n на 1 до використання її значення, а n++ — після того як її значення було використано.

Приклад:

1. n=5 1. n=5

х= n++ х= ++n

результат: результат:

х=6←5+1 х=5+1=6

n=5clip_image002 n=6

Побітові логічні операції. Ці операції не можна використовувати для змінних типу float або double, тобто вони застосовуються тільки для типу short або char. До таких операцій відносять: &– (побітова кон’юнкція); I – (побітова диз’юнкція), ^ – (побітове додавання за mod 2). Слід відрізняти побітові операції від логічних.

Приклад:

х=1, у=2

х&у=0

х&&у=1(істинне)

Первинними виразами, які не містять знаків операцій, є імена змінних і константи. Значення константи – це відповідний елемент типу, до якого вона належить. Значення виразу, що є іменем змінної, — це значення змінної, тобто з появою імені змінної до нього застосовується не позначена явно операція «добути значення». Складнішими за первинні є вирази, утворені з операндів, знаків операцій та дужок. Операнди – це константи, змінні, покажчики функцій та вирази. Вирази, в яких всі первинні – константи, називаються константними і значення таких виразів обчислюється під час трансляції, і вони вживаються скрізь, де допустимі константи.

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

Рис. Пріоритетними операції зверху до низу. В одному рядку розміщені операції з однаковими пріоритетами:

( ) [ ] → •

! ~ ++ — + — * &

* / %

+ — << >>

< <= >>=

= = !=

&

^

I

&&

II

?:

= += – = *= /= %= &= ^= I= <<= >>=

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

Перетворення типів у виразах. Типи упорядковано за зростанням:char, short, int, long, float, double; цілі типи вважаються нижчими відповідних unsigned-типів. Перед обчисленням значення виразу його операнди типу char і short перетворюються в int, типу unsigned char і unsigned short – в unsigned int, типу float — у double. Якщо після цього операція має операнди неоднакових типів, то операнд нижчого типу перетворюється в операнд вищого типу; операнди типу long та unsigned int – в тип unsigned long.

У виразах присвоювання значення виразу перетворюється у значення типу змінної, причому можливе «зниження» типу. В перетвореннях значень від типу double до типу float відбувається округлення; float до int відкидається дробова частина без округлення; від вищого цілого до нижчого – відкидаються старші розряди значення.

Оператори порівняння:

> >= <<=

Всі вони мають однаковий пріоритет. На одну ступінь нижче пріоритет операцій порівняння на рівність:

(= =) – дорівнює (!=) – не дорівнює

Оставьте комментарий к статье