|
Інші цілі типи
Окрім int існує ще декілька цілих типів, з яких найбільш споживаними є long і short.
Розмір змінних типу int є апаратно-залежним. Змінні типів long і short, навпаки, мають фіксований розмір, не залежний від використовуваної системи.
Тип long. Розмір цього типу завжди дорівнює 4 байтам і збігається з розміром типу int у разі 32-розрядних систем, подібних Windows. Це означає, що діапазон значень типу long збігається з діапазоном типу int: від -2 147 483 648 до 2 147 483 647. Тип long може бути описаний як long int між двома такими описами немає різниці. Якщо ваша операційна система 32-розрядна, то не важливо, який тип використовувати — i n t або long, але в 16-розрядній системі тип long збереже свій діапазон значень, тоді як тип int вже матиме діапазон, співпадаючий з типом short. Якщо необхідно описати константу типу long, то після її числового значення слід вказати символ L: longvar = 7678L;
Тип short. Цей тип в будь-якій операційній системі має розмір, рівний двом байтам. Діапазон значень типу short — від -32 768 до 32 767. Використання типу short не має особливого сенсу на сучасних 32-розрядних операційних системах, за винятком тих випадків, коли необхідна економія пам'яті. Не дивлячись на вдвічі більший розмір в порівнянні з типом short, обробка змінних типу int відбувається швидше.
Багато компіляторів дозволяють визначати цілі типи з вказівкою потрібної розрядності (у бітах). Імена таких типів починаються з подвійного символу підкреслення: __int8, __intl6, __int32, __int64. Тип int8 відповідає типу char, типи __int16 і __int32 — відповідно типу short і пари типів int і long (справедливо як мінімум для 32-розрядних систем). Тип __int64 використовується для зберігання великих цілих чисел розрядністю до 19 десяткових знаків. Перевага цих типів даних полягає в тому, що вони не залежать від операційної системи, в якій вони використовуються, але, проте, використання цих типів не набуло великого поширення.
Внутрішнє представлення величини цілого типу
Ціле число в пам’яті представляється в двійковому коді. Двійкові розряди нумерують від 0 до 31 справа наліво.
. | . | . | . | . | |||||||||||
. | . | . | . | . |
Старший розряд має номер 31 і часто називається знаковим розрядом. Знаковий розряд дорівнює одиниці у всіх від'ємних чисел і нулю у невід'ємних.
Максимальне за модулем знакове число, що може бути подане в чотирибайтовому слові, є число:
231- 1 = 2147483647,
тобто діапазон чисел, які можуть бути представлені в 4 байтах
-2147483648, -2147483647,..., -2, -1, 0, 1, 2,..., 2147483647.
Двійкове представлення максимального по абсолютній величині від'ємного числа складається з одиниці і тридцяти одного нуля:
-214748364810 = 100000000000000000000000000000002
Двійкове представлення числа -1 складається з тридцяти двох одиниць:
- 110 = 111111111111111111111111111111112
010 = 000000000000000000000000000000002
110 = 000000000000000000000000000000012
Двійкове представлення максимального додатнього числа складається з нуля в знаковому розряді і тридцяти однієї одиниці:
214748364710 = 011111111111111111111111111111112
Для запису внутрішнього представлення цілого від’ємного числа (-N) необхідно:
1) отримати внутрішнє представлення додатнього числа N;
2) отримати зворотний код цього числа заміною 0 на 1 і 1 на 0;
3) отримати додатковий код: к числу в зворотньому коді додати 1.
Символьні змінні
Символьні змінні зберігають цілі числа, що містяться в діапазоні від -128 до 127. Іноді символьні змінні використовують для представлення цілих чисел із вказаного діапазону, але набагато частіше в таких змінних зберігаються ASCII-коды символів.
Змінні смвольного типу описуються службовим словом char. Розмір пам'яті, який займають такі змінні, дорівнює 1 байту (8 бітам).
Таблиця ASCII-кодов призначена для інтерпретації символів як чисел. Діапазон значень цих чисел 0<=сhislo<=127. Більшість операційних систем сімейства Windows розширюють верхню межу цього діапазону до 255 для того, щоб включити в ASCII-таблицю символи національних алфавітів і псевдографічні символи.
Оскільки 256 чисел недостатньо для представлення символів всіх існуючих алфавітів, в стандартному C++ застосовується розширений символьний тип wchar_t. Розмір пам'яті, який займають змінні цього типу, дорівнює 2 байтам (16 бітам). Діапазон кодів символів від 0 до 65535.
- Символьні константи
Символьні константи записуються в одиночних лапках: 'а', b' і так далі. Зверніть увагу на те, що символьні константи записуються в одиночних лапках, тоді як строкові константи — в подвійних. Коли компілятор зустрічає символьну константу, він замінює її на відповідний ASCII-код. Наприклад, константа 'а' буде замінена числом 97, як показано на малюнку.
Символьним змінним можна привласнювати значення символьних констант.
Приклад 4.
// charvars.cpp
// застосування символьних констант
#include <iostream.h> // для cout и т.п.
int main()
{
char charvar1 ='A'; // символьна змінна із значенням 'A'
char charvar2 ='\t'; // символьна змінна із значенням символу табуляції
cout << charvar1; // виведення змінної на екран
cout << charvar2; // виведення змінної на екран
charvar1 ='B'; // надання константного значення символьній змінній
cout << charvar1; // виведення змінної на екран
cout << '\n'; // перехід на наступний рядок
return 0;
}
Ініціалізація змінних можлива одночасно з їх оголошенням. Змінні charvar1 і charvar2 типу char ініціалізувалися константними значеннями 'А' і '\t'.
- Керуючі послідовності
В качестве примеров управляющих последовательностей можно привести '\n', уже упоминавшуюся в этой главе, и '\t', используемую в последнем примере.
Назва «керуюча послідовность» означає, що символ \ «керує» інтерпретацією наступних за ним символів послідовності. Так, t сприймається не як символ 't', а як символ табуляції. Символ табуляції означає, що весь потік виводу буде умовно роздільний на фрагменти однакової довжини, яка визначається кроком табуляції, і наступний символ буде надрукований на початку наступного фрагмента, а не відразу за попереднім символом. У консольних програмах крок табуляції дорівнює восьми позиціям.
В останньому рядку програми символьна константа '\n' посилається об'єкту cout і відбувається переведення курсору на початок наступного рядка.
Керуючі послідовності можна використовувати як окремі константи, так і у складі строкових констант.
Оскільки при вживанні символьних і строкових констант символ \, а також одинарні і подвійні лапки по-особливому інтерпретуються компілятором, необхідно за допомогою керуючих послідовностей забезпечити спосіб їх включення в символьні і строкові константи як звичайних символів. Ось приклад реалізації виводу на екран рядка з лапками:
cout << "\"Ну все, мы полетели\", сказала она.";
Рядок, що виводиться на екран, матиме вигляд
"Ну все, мы полетели", сказала она.
Іноді буває необхідно описати символьну константу, яка не може бути введена з клавіатури, наприклад, псевдографічний символ (закрашений прямокутник) з ASCII-кодом 178. Щоб зробити це, можна використовувати керуючупослідовність виду '\xdd', де d позначає шістнадцятиричну цифру. Якщо перевести число 178 в шістнадцятиричну систему числення, то отримаємо число В2. Таким чином, потрібний символ представляється керуючоюпослідовністю '\хВ2'.
Дата добавления: 2015-11-28; просмотров: 136 | Нарушение авторских прав