Стандартні типи даних, модифікатори, кваліфікатори доступу й перетворення типів даних Кожна програма обробляє певну інформацію. У C++ дані мають один з восьми базових типів: char (текстові дані), int (цілі числа), float (числа з плаваючою комою одинарної точності), double (числа з плаваючою комою подвійної точності), void (порожні значення), bool (логічні значення), перерахування й покажчики. Текстом (тип даних char) є послідовність символів, які можуть бути розділені пропусками. Зазвичай кожен символ займає 8 біт або один байт з діапазоном значень від 0 до 255. Цілі числа (тип даних int) знаходяться в діапазоні від – 32 768 до 32 767 і займають 16 біт, тобто два байти або одне слово. У Windows NT і Windows XP і сучасніших ОС Windows використовуються 32-розрядні цілі числа, що дозволяє розширити діапазон значень від – 2 147 483 648 до 2147 483 647. У C++ підтримуються три типи цілих чисел. Разом із стандартним типом int існують типи short int (коротке ціле) і long int (довге ціле). Допускається скорочений запис short і long. Числа з плаваючою комою одинарної точності (тип даних float) можуть бути представлені як у фіксованому форматі, так і в експоненціальному. Діапазон значень – від ± 3.4Е-38 до ± 3.4Е+38, розмірність – 32 біта, тобто 4 байти або 2 слова. Числа з плаваючою комою подвійної точності (тип даних double) мають діапазон значень від ± 1.7Е-308 до ± 1.7Е+308 і розмірності 64 біт, тобто 8 байтів або 4 слова. Раніше існував тип long double з розмірністю 80 біт і діапазоном від ± 1.18Е-4932 до ± 1.18Е+4932. У нових 32-розрядних версіях компіляторів він еквівалентний типу double і підтримується з міркувань зворотної сумісності з написаними раніше додатками. Перерахування представляються кінцевим набором іменованих констант різних типів. Тип даних void, як правило, застосовується у функціях, що не повертають ніякого значення. Цей тип даних також можна вико-ристовувати для створення узагальнених покажчиків. Покажчики, на відміну від змінних інших типів, містять не дані в звичайному розумінні цього слова, а адреси пам'яті, де зберігаються дані. Змінні нового логічного типу даних bool в C++ можуть містити тільки одну з двох констант: true або false. Компілятор мови C++ дозволяє при описі змінних вказувати модифікатор unsigned. Він застосовується з чотирма типами даних: char, short, int і long. Наявність даного модифікатора вказує на те, що значення змінної повинне інтерпретуватися як беззнакове число, тобто найстар-ший біт є бітом даних, а не бітом знаку. Існує модифікатор signed, який виконує протилежну unsigned дію. У C++ використовуються два кваліфікатори доступу const і volatile. Вони застосовуються для позначення незмінних змінних (const) і змінних, значення яких можуть змінитися в будь-який момент (volatile). Іноді потрібне, щоб значення змінної залишалося постійним протягом всього часу роботи програми. Такі змінні називаються константними. Наприклад, якщо в програмі обчислюється довжина кола або площа круга, часто доводиться оперувати числом (3,14159). У бухгалтерських програмах такою величиною є ПДВ. Застосування кваліфікатора volatile може знадобитися в тому випадку, коли змінна оновлюється системними пристроями, наприклад, таймером. При отриманні сигналу від таймера виконання програми переривається і значення змінної змінюється. Кваліфікатор volatile також застосовується при описі об'єктів даних, спільно використовуваних різними процесами в багатозадачному середовищі. Допускається в деяких випадках одночасне використання кваліфікаторів const і volatile. У С++ застосовуються й інші кваліфікатори. Їх розгляд виходить за рамки методичних рекомендацій. Часто буває, коли в операції беруть участь змінні різних типів. Такі операції називаються змішаними. Наприклад: int ival; float fres; ival=ival*fres; У процесі виконання змішаних операцій компілятор автоматично проводить перетворення типів даних. Цілочисельне значення змінної ival зчитується з пам'яті, приводиться до типу з плаваючою комою й помножується на початкове значення змінної fres. Результат у вигляді значення з плаваючою комою привласнюється змінною цілого типу ival. Автоматичні перетворення типів даних при виконанні змішаних операцій здійснюються відповідно до ієрархії перетворень. Суть полягає в тому, що з метою підвищення продуктивності в змішаних операціях значення різних типів тимчасово приводяться до того типу даних, який має більший пріоритет в ієрархії. Нижче перераховані типи даних у порядку зниження пріоритету: double, float, long, int, short. Якщо значення перетвориться на тип, що має велику розмірність, немає втрати інформації, унаслідок чого не страждає точність обчислень. Іноді потрібно змінити тип змінної, не чекаючи автоматичного перетворення. Для цього призначена операція приведення типу. Якщо в програмі необхідно тимчасово змінити тип змінної, потрібно перед її ім'ям ввести в круглих дужках назву відповідного типу даних. Наприклад: fr=fv+(float) iv/iw; fr=fv+iv/(float) iw; fr=fv+(float) iv/(float) iw; У всіх трьох випадках перед виконанням ділення відбувається явне приведення значення однієї або двох змінних до типу float. |