Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Символьні змінні

Інші цілі типи

Окрім 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 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.013 сек.)