Константи з плаваючою крапкою.
Константа з плаваючою точкой- це дійсне десяткове додатнє число. Величина дійсного числа включає цілу, дробову частини та зкспоненту. Константи з плаваючою крапкою мають наступний формат представлення:
[<цифри>][.<цифри>][E[-]<цифри>]
де <цифри> - одна або більш десяткових цифр (від 0 до 9)
а E або e -символ експоненти. Ціла або дробова частини константи можуть бути опушені, але не обидві відразу. Десяткова крапка може бути опущена тільки тоді, коли була задана експонента.
Експонента складається з символу експоненти, за яким следує цілочисельна величина експоненти, можливо від’ємна.
Пробільні символи не можуть розділяти цифри або символи константи.
Константи з плаваючою крапкою завжди представляють додатні величини. Якщо потрібні від’ємні величини, то необхідно сформувати константний вираз із знака мінус і константи. Знак мінус розглядається як арифметична операція.
Приклади констант з плаваючою крапкою і константних виразів:
15.75 1.575E1 1575e-2
-0.0025 -2.5e-3 25e-4
Ціла частина константи з плаваючою крапкою може бути опущена, наприклад:
.75 .0075e2 -.125 -.175E-2
Всі константи з плаваючою крапкою мають тип double.
3. Символьні константи.
Символьна константа - це буква, цифра, знак пунктуації або ESC- символ, взятий в одинарні лапки (апострофи). Величина символьної константи дорівнює значенню представляючого її коду символу. Символьні константи мають тип int.
Символьна константа має наступну форму представлення:
'<символ>' ,де <символ> може бути будь-яким символом. Символьна константа не може містити в собі одиночну лапку (') або символ нового рядка. Щоб використовувати одинарну лапку ('), похилу риску вліво (\) і символ нового рядка необхідно вставити перед цими знаками похилу риску вліво. Такий спеціальний запис називається керуючою послідовністю.
Коди керуючих послідовностей мови С++.
Назва символа | код |
новя стрічка (newline, linefeed) | \n |
горизонтальна табуляція (horizontal tab) | \t |
вертикальна табуляція (vertical tab) | \v |
Повернення на крок (backspace) | \b |
Повернення каретки (carriage return) | \r |
перевід сторінки (formfeed) | \f |
сигнал звінка (audible alert, bell) | \a |
Зворотня похила лінія (backslash) | \\ |
знак питання (question mark) | \? |
Одинарна лапка (single quote) | \' |
двійна лапка (double quote) | \" |
Вісімковий код (octal number) | \ooo |
Шістнадцятковий код (hex number) | \xhh |
Якщо за \ не слідує жоден з перерахованих вище символів, то результат не був визначений.
В деяких реалізаціях є розширений набір символів, який не може бути охоплений типом char. Константа для такого набору пишеться з буквою L попереду (наприклад L'x') і називається розширеною символьною константою. Така константа має тип wchar_t (цілочисельний тип, визначений в стандартному заголовному файлі <stddef.h>). Як і у разі звичайних
символьних констант, тут також можливі вісімкові і шістнадцяткові керуючі послідовності; якщо специфіковане значення перевищить тип wchar_t, результат не буде визначений.
Тема. Перетворення типів даних. Основні арифметичні та логічні операції. Вирази.
План
1. Перетворення типів даних.
2. Вирази.Основні арифметичні операції.
3. Основні логічні операції.
1. Перетворення типів даних .
Деякі оператори залежно від своїх операндів можуть викликати перетворення їх значень з одного типу в іншій.
Об'єкти короткого цілого, перелічувального, символьного типу - всі із знаком або без можуть використовуватися у виразі там, де можливо вживання цілого. Якщо тип int дозволяє "охопити" всі значення початкового типу операнда, то операнд приводиться до типу int, в противному випадку він приводиться до unsigned int. Ця процедура називається цілочисельним підвищенням (Integral promotion - цілочисельне підвищення - іноді також переводять як "інтегральне просування”).
Будь-яке ціле приводиться до деякого заданого беззнакового типу шляхом пошуку конгруентного (тобто має те ж двійкове представлення)
якнайменшого додатнього значення і отримання залишку від ділення його на nmax + 1, де nmax - найбільше число в цьому беззнаковому типі. Для двійкового представлення в додатковому коді це означає або викидання зайвих старших розрядів, якщо беззнаковий тип "вже" початкового типу, або заповнення бракуючих старших розрядів нулями (для значення без знака) чи значенням знака (для значень із знаком), якщо беззнаковий тип "ширше" початкового. В результаті приведення будь-якого цілого до знакового
типу перетворюване значення не зміняється, якщо воно представляється в цьому новому типі.
При перетворенні з типу з плаваючою крапкою в цілочисельний дробова частина значення відкидається; якщо отримане при цьому значення не можна представити в заданому цілочисельному типі, то результат не визначений. Зокрема, не визначений результат перетворення від’мних значень з плаваючою крапкою в беззнакові цілі.
Якщо значення перетвориться з цілого у величину з плаваючою крапкою і вона знаходиться в допустимому діапазоні, але представляється
в новому типі неточно, то результатом буде одне з двох значень нового типу, які є найближчими до початкового. Якщо результат виходить за межі діапазону допустимих значень, поведінка програми не визначена.
При перетворенні з типу з плаваючою крапкою меншої точності в тип з плаваючою крапкою більшої точності значення не змінюється.
Якщо, навпаки, перехід здійснюється від більшої точності до меншої і значення залишається в допустимих межах нового типу, то результатом буде одне з двох найближчих значень нового типу. Якщо результат виходить за межі діапазону допустимих значень, поведінка програми не визначена.
В багатьох операціях перетворення типів операндів і визначення типу результату здійснюються за одними і тими ж правилами. Вони полягають в тому, що операнди приводяться до деякого загального типа, який також є і типом результату. Ці правила називаються звичайними арифметичними перетвореннями.
· Якщо який-небудь з операндів має тип long double, то інший приводиться до long double.
· Якщо який-небудь з операндів має тип double, то інший приводиться до double.
· Якщо який-небудь з операндів має тип float, то інший приводиться до float.
· Якщо один з операндів має тип unsigned long int, то і інший перетвориться в unsigned long int.
· Якщо один з операндів належить типу long int, а інший - unsigned int, то результат залежить від того, чи покриває long int всі значення unsigned int, і якщо це так, то unsigned int приводиться до long int; якщо ні то обидва операнди перетворяться в unsigned long int.
· Якщо один з операндів має тип long int, то інший приводиться до long int.
· Якщо один з операндів - unsigned int, то інший приводиться до unsigned int.
Отже, 1)арифметика з операндами з плаваючою крапкою тепер може проводитися з одинарною точністю, а не тільки з подвійною;
2)більш короткий беззнаковий тип в комбінації з більш довгим знаковим типом не поширює властивість беззнаковости на тип результату.
2. Вирази. Основні арифметичні операції.
Комбінація знаків операцій і операндів, результатом якої є певне значення, називається виразом. Знаки операцій визначають дії, які повинні бути виконані над операндами. Кожен операнд у виразі може бути виразом. Значення виразу залежить від розташування знаків операцій і круглих дужок у виразі, а також від пріоритету виконання операцій.
При обчисленні виразів тип кожного операнда може бути перетворений до іншого типу. Перетворення типів можуть бути неявними, при виконанні операцій і викликів функцій, або явними, при виконанні операцій приведення типів.
Операнд- це константа, літерал, ідентифікатор, виклик функції, індексний вираз, вираз вибору елементу або складніший вираз, сформований комбінацією операндів, знаків операцій і круглих дужок. Будь-який операнд, який має константне значення, називається константним виразом. Кожен операнд має тип.
Якщо як операнд використовується константа, то йому відповідає значення і тип константи, що представляє його. Ціла константа може бути типу int, long, unsigned int, unsigned long, залежно від її значення і від форми запису. Символьна константа має тип int. Константа з плаваючою крапкою завжди має тип double.
В мові Сі розрізняють унарні та бінарні операції. Арифметичні вирази розрізняються по складності. Найпростіший вираз містить єдиний елемент даних (літерал, константу або змінну). Складні вирази включають набір операцій, функцій, літерали, константи і змінні.
АРИФМЕТИЧНі ОПЕРАЦІЇ
Знак операції | Дія, що виконується | Приклади |
+ | Додавання | a=b+c, якщо b=2,c=3, то a=5 |
- | Віднімання | a=b-c, якщо b=2,c=3, то a=-1 |
* | Множення | a=b*c, якщо b=2,c=3, то a=6 |
/ | Ділення | a=b/c, якщо b=6,c=3, то a=2 |
% | Ділення по модулю | a=b%c, якщо b=5,c=3, то a=2 |
Операції інкремента і декремента використовуються в префіксній і пост-
фиксной формах. Мова С++ дає вам можливість застосовувати ці операції до змінних, в яких зберігаються символи, цілі числа і навіть числа з плаваючою
крапкою. Операція інкременту збільшує значення змінної на 1, а декрименту – зменшує на 1.
Операції ++ інкременту має такий вигляд :
++змінна або змінна++
В першому випадку (++n) значення операнду (n) змінюється перед його використанням у виразі, а в другому випадку (n++ ) - після його використання.
Дата добавления: 2015-08-26; просмотров: 1469;