logo search
Модуль 03 Віконні застосування / Лекційний матемріал / Частина 1

3.8.1. Тип char

Змінна типу char може зберігати тільки один символ (точніше, вона зберігає в собі код символа за таблицею Unicode). Оголошується така змінна за загальними правилами:

тип ім’я_змінної

Наприклад, char c;. Щоб такій змінній присвоїти значення (т. т. тільки один символ і не більше), потрібно після знаку присвоєння вказати потрібний символ, поміщений в апострофи (одинарні лапки):

char c='a';

Як відзначалося раніше, ви можете присвоювати будь-який символ із будь-якої мови. Хоч китайський ієрогліф. Але потрібно пам'ятати, що тип не містить у собі опис шрифту (для цього існують інші засоби). Тому, якщо ви спробуєте вивести на екран ієрогліф, отримаєте щось інше.

Літералами прийнято називати текстові константи. У цьому сенсі запис char c='a'; задає символьну константу (літерал) с.

Деякі символи з таблиці кодування не мають відображення на екрані (чи на папері), тому що спеціально визначені як управляючі. Тобто вони управляють вводом-виводом тексту або служать для розшифровування значень інших символів (наприклад, до якої мови відноситься символ). Фрагменти таблиці Unicode показані на рис. 3.4.

Рис. 3.4. Фрагмент таблиці Unicode

Таблицю легко знайти в Інтернеті.

Коди перших 32-х символів таблиці - коди управляючих символів. Далі йдуть підтаблиці в розрізі мов: латиниця, грецький і т. д.

Змінній типу char можна присвоювати, разом з символами, як показано вище, і їх коди безпосередньо. Тільки ці коди повинні мати форму так званих esc-послідовностей (або управляючих послідовностей). Усі принтери, наприклад, використовують такі послідовності, отримуючи їх від комп'ютера для управління друком.

Запис char MyChar = '\x0058'; означає, що змінній MyChar буде присвоєний шістнадцятко вий (символ х вказує на це) код 0058 (символ X, як показано на рис. 3.5).

Рис. 3.5. Символ згідно таблиці Unicode

Цей факт легко перевірити, якщо наведене оголошення символа вставити в текст додатка, нижче вставленого рядка встановити точку зупину програми і запустити програму в режимі відлагодження. Коли програма зупиниться на точці зупину, перевірте вміст оголошеного символа, навівши на нього курсор миші (рис. 3.6).

Змінній char можна присвоювати і цілі числа, поставивши примусове перетворення їх в тип char:

char MyChar = (char) 88;

Тут десяткове число 88 (зрозуміло, що воно грає роль коду 88) примусово перетвориться в тип char згідно вказаного формату: (char). Можете перевірити за програмою, вставивши в неї вказаний рядок, як це зроблено раніше за допомогою відлагоджувача і наведення курсора миші на змінну. Результат буде тим же - Х. Чому? Тому що таблиця Unicode - таблиця шістнадцяткових кодів. А у нас число 88 - десяткове. Отже, середовище програмування переведе це число у шістнадцятковий формат, щоб скористатися таблицею Unicode. А 88 в шістнадцятковому форматі дорівнює 58. А це, як ми бачили раніше - код символа Х.

Раніше ми присвоїли змінній типу char безпосередньо значення шістнадцяткового коду у вигляді: char MyChar = '\x0058';. Але такий код можна присвоїти і в іншому вигляді:

char MyChar = '\u0058';

Тут символ u після зворотного слеша (\) вказує на Unicode. Тип char можна явно перетворювати в типи ushort, int, uint, long, ulong, float, double, decimal. Приклад показаний на рис. 3.7. Тобто таким способом ми можемо отримати код символа в десятковій системі числення.

Проте зворотне перетворення не можливе.

Рис. 3.6. Перевірка з допомогою програми факту присвоєння символу деякого коду

замість літерала

Управляючі символи таблиці Unicode, можуть записуватися не лише у формі чотирирозрядного шістнадцяткового числа із зворотним слешем на початку, але і символьному вигляді, для полегшення користування ними. Перелік деяких таких символів приведений в таблиці 3.2.

Таблиця 3.2. Управляючі символи Unicode

Вигляд

Пояснення

'\\'

Зворотний слеш

'\0'

Завершальний нуль-символ рядка

'\a'

Алерт (попередження)

'\b'

Бекспейс (повернення назад на одну позицію)

'\f'

form feed (протягування сторінки)

'\n'

Перехід на новий рядок

'\r'

Повернення каретки

'\t'

Горизонтальна табуляція

'\v'

Вертикальна лапка

'\u'

Unicode- послідовність

'\' '

Одинарна лапка(апостроф після слеша), потрібна для символьних літералів

'\" '

Подвійна лапка(після слеша), потрібна в рядкових літералах

Рис. 3.7. Перетворення типу char в числові дані