- •Конспект студента. Коротка хронологія найважливіших етапів розвитку мови :
- •Алфавіт мови.
- •Ідентифікатори
- •Ключові слова
- •Управляючі послідовності
- •Концепція типу даних
- •Основні типи даних
- •Діапазони значень простих типів даних для ibm pc
- •Символьний тип (char)
- •Розширений символьний тип (wchar_t)
- •Логічний тип (bool)
- •Змінні. Клас пам'яті.
- •Типи з плаваючою крапкою (float, double і long double)
- •Перетворення типів.
- •Структура програми
- •Проста програма
- •Змінні і вирази
- •Область дії ідентифікатора
- •Вирази.
- •Порядок обчислення виразів
- •Бітові операції.
- •Введення і виведення даних.
- •Стежте за помилками переповнювання
- •Стежте за помилками неспівпадання типів
- •Читання символьних даних
- •Читання слів з клавіатури
- •Форматування введення-виведення засобами мови с Функція printf()
- •Функція scanf()
- •If (вираз) оператор 1; [else оператор 2;]
Діапазони значень простих типів даних для ibm pc
-
Тип
Діапазон значень
Розмір (байт)
bool
true і false
1
signed char
-128 ... 127
1
unsigned char
0 ... 255
1
signed short int
-32 768 ... 32 767
2
unsigned short int
0 ... 65 535
2
signed long int
-2 147 483 648 ... 2 147 483 647
4
unsigned long int
0 ... 4 294 967 295
4
float
3.4e-38 ... 3.4e+38
4
double
1.7e-308 ... 1.7e+308
8
long double
3.4e-4932 ... 3.4e+4932
10
Для дійсних типів в таблиці приведені абсолютні величини мінімальних і максимальних значень.
Для написання переносимих на різні платформи програм не можна робити припущень про розмір типу int. Для його отримання необхідно користуватися операцією sizeof, результатом якої є розмір типу в байтах. Наприклад, для операційної системи MS-DOS sizeof (int) дасть в результаті 2, а для Windows 9X або OS/2 результатом буде 4.
У стандарті ANSI діапазони значень для основних типів не задаються, визначаються тільки співвідношення між їх розмірами, наприклад:
sizeof(float) sizeof(double) sizeof(long double)
sizeof(char) sizeof(short) sizeof(int) sizeof(long)
Мінімальні і максимальні допустимі значення для цілих типів залежать від реалізації і приведені в заголовному файлі <limits.h> (<climits>), характеристики дійсних типів — у файлі <float.h> (<cfloat>), а також в шаблоні класу numeric_limits.
Різні види цілих і дійсних типів, що розрізняються діапазоном і точністю представлення даних, введені для того, щоб дати програмістові можливість найефективніше використовувати можливості конкретної апаратури, оскільки від вибору типу залежить швидкість обчислень і об'єм пам'яті. Але оптимізована для комп'ютерів якого-небудь одного типу програма може стати непереносимою на інші платформи, тому в загальному випадку слід уникати залежностей від конкретних характеристик типів даних.
Цілий тип (int)
Розмір типу int не визначається стандартом, а залежить від комп'ютера і компілятора. Для 16-розрядного процесора під величини цього типу відводиться 2 байти, для 32-розрядного — 4 байти.
Специфікатор short перед ім'ям типу указує компілятору, що під число потрібно відвести 2 байти незалежно від розрядності процесора. Специфікатор long означає, що ціла величина займатиме 4 байти. Таким чином, на 16-розрядному комп'ютері еквіваленти int і short int, а на 32-розрядному — int і long int.
Внутрішнє представлення величини цілого типу — ціле число в двійковому коді. При використанні специфікатора signed старший біт числа інтерпретується як знаковий (0 — додатне число, 1 — від’ємне). Специфікатор unsigned дозволяє представляти тільки додатні числа, оскільки старший розряд розглядається як частина коду числа. Таким чином, діапазон значень типу int залежить від специфікаторів. За умовчанням всі цілочисельні типи вважаються знаковими, тобто специфікатор signed можна опускати.
Константам, що зустрічаються в програмі, приписується той або інший тип відповідно до їх вигляду. Якщо цей тип з яких-небудь причин не влаштовує програміста, він може явно вказати необхідний тип за допомогою суфіксів L, l (long) і U, u (unsigned). Наприклад, константа 32L матиме тип long і займатиме 4 байти. Можна використовувати суфікси L і U одночасно, наприклад, 0x22UL або 05Lu.
