Вирази та операції
Завантажити презентаціюПрезентація по слайдам:
Вирази та операції Вираз – послідовність операндів, об’єднаних знаками операцій та круглими дужками. Операнди – об’єкти, над якими виконуються операції; операції – задають дії над операндами. Приклад: 0.5*(z+w)>=(z-u)/(w-u) kor=sin(x)-2*exp(x-0.7) Класифікація операцій: 1) за кількістю операндів - Унарні (-A) Бінарні (A+B) Тринарні ((A)?B:C)
2) за видом дій - арифметичні операції присвоювання; операції відношення; логічні; порозрядні( побітові), інші. за приоритетом поділяють на 16 рівнів. Найвищій мають операції звертання до функції, до елементу масиву, структури; потім – інкремент та декремент,…., арифметичні, .., відношення,.., кома Порядок виконання – за приоритетом та залежно від асоціативності. Порядок можно змінювати за допомогою круглих дужок. Приклад: x
Приклад int b=7, g=3 b/g => 2 g/b =>0 b%g =>1 -b => -7 Щоб частка була дійсною, дйісним має бути хоча б один операнд 7.0/3 (double)b/3 Операція явного перетворення типу (тип) - унарна арифметична операція зміни знака Порозрядні операції (побітові) виконуються тільки над операндами цілих типів і дають змогу працювати з окремими бітами даних (можливості асемблера)
Операції присвоювання Група з 15 операцій: унарних (++ --) та бінарних. Змінюють значення свого операнда: у разі бінарних операцій лівий операнд набуває значення виразу , записаного справа; у разі унарних операцій змінюється початкове значення операнда. Операнд, якому присвоюється значення повинен бути L-value (змінною або розадресованим вказівником). Для бінарних операцій присвоєння виконується справа наліво. Унарні операції присвоювання ++ інкремент (збільшує значення на 1) -- декремент ( зменшує на 1) ++ К (префіксна форма) К++ (постфіксна форма) Приклад: sum+=n (sum=sum+n); k+=1 (k++ або k=k+1) В мові Сі допускаються присвоювання виду : a=(b=c=1)+1; Приклад: int data1, data2, data3; data1=data2=data3=68;
Операції порівняння В мові Сі немає логічного типу (булевого), тому результатом умовного виразу є цілочисельне арифметичне значення. "Істинно" - це ненульова величина, а "хибно" - це нуль. Приклади: #include x
Операндами логічних операцій є логічні дані (найчастіше це вирази з операціями порівняння) Приклад !(x>a && x
Операція слідування (кома) Операція "кома" (,) називається операцією слідування, яка "зв'язує" два довільних вирази. Список виразів, розділених між собою комами, обчислюються зліва направо. Наприклад, фрагмент тексту a=4; b=a+5; можна записати так : a=4, b=b+5; Приклад1: int a[10],sum,i; /* ... */ sum=a[0]; for (i=1;i
Умовна операція ?: Синтаксис: умова ? вираз_1 : вираз_2 Спочатку обчислюється вираз умови. Якщо цей вираз має ненульове значення, то обчислюється вираз_1. Результатом операції ?: в даному випадку буде значення виразу_1. Якщо вираз умови рівний нулю, то обчислюється вираз_2 і його значення буде результатом операції. В будь-якому випадку обчислюється тільки один із виразів (вираз_1 або вираз_2). Наприклад, дану операцію зручно використати для знаходження найбільшого з двох чисел x і y: max=(x>y)?x:y; Можна замінити умовний оператор Приклад: Z=(0.1-sin(x))?(x*sin(x)):(x*cos(x)); Якщо 0.1-sin(x)=0, то z=x*sin(x). Инакше - z=x*cos(x).
Операція sizeof() Дана операція обчислює розмір пам'яті, необхідний для розміщення в ній виразів або змінних вказаних типів. Операція має дві форми : ім'я_типу А; sizeof А; sizeof (ім'я_типу); Операцію sizeof() можна застосовувати до констант, типів або змінних, у результаті чого буде отримано число байт, що відводяться під операнд. Приміром, sizеof(int) поверне число байт для розміщення змінної типу int.
Узгодження типів у виразах Якщо операнди бінарної операції мають різні арифметичні типи, то компілятор перевіряє сумісність і встановлює спільний тип. 1) Перетворення типів в операціях присвоєння: тип виразу справа від знака = до типу змінної (чи L-операнда). Якщо тип змінної старший, то тип виразу підтягується до типу змінної. Якщо тип змінної молодший, то значення перетворюється (обтинається) до типу змінної (можливі помилки !) Приклад: int m; m=2.1; /* m=2 */ m=2.9; /* m=2*/ вираз з використанням явного перетворення типу, що повертає цілочисельне значення, найближче до дійсного Х (з діапазону доп. значень типу int ) x>0 ?(int)(x+0/5):(int)(x-0/5) 2) Арифметичні перетворення типів: встановлено таку ієрархію типів
Стандартні математичні функції Підключення бібліотеки директивою препроцесора # include Всі функції мають тип double. Аргумент теж типу double. Приклад Y=sin(0.5*x)+sqrt(0.3e-2)*pow(2.0,x-1); Можливо створювати макроси з параметрами (не плутати з функціями!), що оброблюються препроцесором. Приклад #define ABS(x) ((x)
Схожі презентації
Категорії