Типи змінних С++ Тип Діапазон Розмір (байт) 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. 4 e-38… 3. 4 e+38 4 double 1. 7 e-308… 1. 7 e+308 8 long double 3. 4 e-4932… 3. 4 e+4932 10
Змінна – це іменована область пам’яті, що служить для зберігання даних певного типу. Загальний вид опису: [клас пам’яті] [const] тип ім’я [ініціалізатор]; • Клас пам’яті може приймати одне із значень auto, extern, static, register. • Const вказує на те, що значення змінної не змінюється. • Ініціалізація дозволяє надати змінній початкового значення під час опису.
Наприклад: short int a = 1; const char C = ‘C’; char f, g = ‘f’; char t (64); float c = 0. 22, y (10), z; Якщо тип значення не співпадає з типом змінної, то викнується перетворення типу за певними правилами. Опис змінної, крім типу та класу пам’яті задає її область дії.
Область дії ідентифікатора – це та частина програми, в якій його можнна використати для доступа до зв’язаної з ним області пам’яті. Змінна може бути локальна або глобальна. Клас пам’яті визначає час життя і область видимості програмного проекта. Якщо явно не вказаний, то визначається компілятором. Час життя може бути постійним (під час виконання програми) або тимчасовим (під час виконання блоку). Область видимості ідентифікатора – це та частина програми, з якої можна отримати звичайний доступ до зв’язаної з ідентифікатором області пам’яті.
Специфікатори класу пам’яті: • auto – автоматична змінна. Пам’ять виділяється у стеку. • extern – змінна визначається в іншому місці програми (в іншому файлі або далі по тексту). Використовується для створення змінних, що будуть доступні у всіх модулях програми, де вони заявлені. • static – статична змінна. Час життя – постійний. Ініціалізується один раз при першому виконанні оператора, що містить визначення змінної. • register – аналогічно auto. Але пам’ять виділяється о можливості в регістрах процесора. Якщо такої можливості у компілятора немає, то змінні обробляються як auto.
Унарні операції ++ збільшення на 1 -- зменшення на 1 sizeof розмір (об’єкту, типу) ~ порозрядне заперечення ! логічне заперечення - унарний мінус + унарний плюс & взяття адреси * розіменування new виділення пам’яті delete звільнення пам’яті (type) перетворення типу (приведення)
Бінарні і тернарні операції * / % + << >> < <= > >= == != & ^ | && || множення ділення остача від ділення додавання віднімання зсув вліво зсув вправо менше або рівно більше або рівно дорівнює не лорівнює побітова кон’юнкція побітове виключне АБО побітова диз’юнкція логічна кон’юнкція логічна диз’юнкція
? : умовна операція (тернарна) = присвоєння *= множення з присвоєнням /= ділення з присвоєнням %= остача від ділення з присвоєнням += додавання з присвоєнням -= віднімання з присвоєнням <<= зсув вліво з присвоєнням >>= зсув вправо з присвоєнням &= побітова кон’юнкція з присвоєнням |= побітова диз’юнкція з присвоєнням ^= побітове виключне або з присвоєнням , послідовне обчислення
Перетворення типів • такі, що змінюють внутрішнє зображення величин (з втратою точності або без втрати точності); • такі, що змінюють тільки інтепретацію внутрішнього зображення. В будь-якому випадку величини типів char, signed char, unsigned char, short int, unsigned short int перетворюються в тип int, якщо він може представити всі значення, або в unsigned int в протилежному випадку.