Evgenii Legotckoi
Evgenii Legotckoi12 травня 2017 р. 13:06

C++ - Підручник 002. Типи, змінні та арифметика

Кожна змінна або вираз має свій тип даних, наприклад оголошення

int some_variable;

вказує, що змінна some_variable має цілий тип int.

Оголошення дозволяє ввести певну змінну програму. Ця змінна матиме певний тип даних: цілісний, з плаваючою комою, символьний у разі базових типів даних, або кастомний тип (структура даних, клас). Тип змінної визначає набір операцій, які можна зробити над змінною. Оголошення змінної визначає виділення області пам'яті, яка потрібна для неї. Також значення цієї змінної, яке з погляду комп'ютера буде послідовністю бітів. Оголошення змінної також несе у собі те ім'я, яким програміст буде звертатися до цієї змінної в програмному коді.

У наведеному вище прикладі маємо змінну, яка має базовий цілісний тип, з якими можуть вироблятися арифметичні дії, дії порівняння, привласнення і т.д. Звертатись у програмному коді до цієї змінної будемо на ім'я some_variable.


Фундаментальні типи даних

C++ надає такі фундаментальні типи даних.

порожня

void - є типом даних із порожнім набором значень. Є незавершеним і може бути встановлений для об'єктів і змінних. Однак, можна використовувати покажчики на тип void, а також використовувати void як значення, що повертається функціями.

nullptr

nullptr - особливий тип даних, який сам собі не є типом як таким, оскільки його не можна встановити як тип змінної, але він може використовуватися як нульовий покажчик. Цей тип був введений у стандарті С++11 замість реалізованої нульової макроконстанти NULL.

логічне значення

bool - логічний тип даних, що приймає значення true або false . Розмір пам'яті, яку займає даний тип даних, може відрізнятися від 1 в залежності від реалізації в цільовій системі. Визначити розмір можна за допомогою оператора sizeof(bool).

Символьні типи

char - Символьні типи використовуються для представлення текстових символів. Розмір символьного типу Char 1 байт, що дозволяє містити 256 різних символів. Подання всіх символів можна знайти у таблиці символів ASCII.

Символьні типи даних поділяються на три типи:

  • signed char - знаковий тип
  • unsigned char - беззнаковий тип
    char - окремий тип, який може бути як знаковим, так і беззнаковим, залежно від того, як відпрацює код компілятора.

Відмінність у діапазоні значень, наприклад:

  • char -128...127
  • непідписаний символ 0...255

char може використовуватися для зберігання цілісних значень, які не перевищують одного байта, але краще використовувати для цілісних значень все-таки тип Int. Але таке допустимо для систем, що вбудовуються, з жорстко обмеженим об'ємом пам'яті.

Також є спеціальні типи символьних даних:

  • wchar_t - тип представлення символів, яким недостатньо одного байта. Це може бути 32 біти для ОС, що підтримують UNICODE, або 16 бітів у нотації Windows для UTF-16.
  • char16_t - тип представлення UTF-16, введений у стандарті C++11 .
    char32_t - тип для представлення UTF-32, введений у стандарті C++11 .

внутр

int - цілісний тип даних. Можуть використовуватися модифікатори, що визначають розмір пам'яті, що виділяється для цього типу даних. Якщо немає модифікаторів, то гарантується, що розмір типу даних не менше 16 біт. Однак, на більшості 32/64 розрядних систем гарантується, що розмір не менше 32-х біт.

Модифікатори

Знакові модифікатори

  • signed - представлення знакового типу даних (якщо опущено, то мається на увазі за умовчанням)
  • unsigned - представлення беззнакового типу даних.

Модифікатори розміру

  • short - цільовий тип оптимізується, щоб розмір був не менше 16 біт
  • long - цільовий тип оптимізується, щоб розмір був не менше 32 біт

Модифікатор long можна застосовувати типу даних двічі, що дає оптимізацію займаного змінної простору щонайменше 64 біт. Ця оптимізація введена у стандарті C++11.

long long int

Модифікатори розміру та знаковості можна також комбінувати.

підписаний довгий довгий int

Типи даних з плаваючою точкою

  • float - 32-х розрядний тип даних із плаваючою точкою.
  • double - 64-х розрядний тип даних з плаваючою точкою.
  • long double - розширений тип даних з плаваючою точкою, введений у стандарті C++11.

До речі, при розробці програмного забезпечення можна помітити використання цих типів даних, який розробник починав з чистого C, а який починав з C++. Поголовне використання float характерне для розробників, які починали з C, double характерний для C++ розробників.

Змінні

Таким чином, змінні можуть мати типи даних, перераховані вище, наприклад:

int a = 12;       // Целочисленный тип, переменная равна 12
double b = 12.25; // Вещественный тип с плавающей точкой двойной точности, переменная равна 12.25
char c = 'a';     // Символьный тип, переменная равна символу "a"

Ініціалізація змінних може здійснюватися кількома способами.

double a1 = 2.3;
double a2 = {2.3};
double a3 {2.3};

Ініціалізація з фігурними дужками було запроваджено стандарті C++11. При ініціалізації фігурними дужками забороняється неявне перетворення, тому компілятор видасть помилку у разі.

int d1 = {2.3};
int d2 {2.3};

авто

Також для оголошення змінних у стандарті C++11 було введено специфікатор auto , який дозволяє оголошувати змінну без зазначення типу. В даному випадку тип виводиться з ініціалізатора, тобто значення, яке буде надано змінній. Таким чином, auto неможливо використовувати без ініціалізатора, тобто

// Правильный, рабочий вариант
auto a = 14; 
// Не правильный вариант, не скомпилируется
auto b;
b = 15;

Специфікатор auto може використовуватися для оголошення лямбда функцій або змінних з дуже складним оголошенням, що веде до спрощення програмного коду.

Арифметика

Над змінними базовими типами можна виконувати різні арифметичні операції:

x+y   // сложение
+x    // унарный плюс
x-y   // вычитание
-x    // унарный минус
x*y   // умножение
x/y   // деление
x%y   // остаток от деления

Також можливе використання операцій порівняння:

x==y  // равно
x!=y  // не равно
x<y   // меньше чем
x>y   // больше чем
x<=y  // меньше чем или равно
x>=y  // больше чем или равно

На додаток до арифметичних та логічних операцій функціонал C++ пропонує більш специфічні операції:

x+=y  // x = x+y
++x   // increment: x = x+1
x−=y  // x = x-y
−−x   // decrement: x = x-1
x∗=y  // x =x*y
x/=y  // x = x/y
x%=y  // x = x%y
Рекомендуємо хостинг TIMEWEB
Рекомендуємо хостинг TIMEWEB
Стабільний хостинг, на якому розміщується соціальна мережа EVILEG. Для проектів на Django радимо VDS хостинг.

Вам це подобається? Поділіться в соціальних мережах!

KL
  • 13 травня 2017 р. 02:31

Переменная аuto доступна для использования в Qt?

Evgenii Legotckoi
  • 13 травня 2017 р. 02:41

Да, доступна. Только нужно использовать стандарт C++11, но насколько помню, Вы используете устаревшие стандарты C++, поэтому у вас вряд ли она будет работать.

Коментарі

Only authorized users can post comments.
Please, Log in or Sign up
OI
  • Ora Iro
  • 24 грудня 2024 р. 06:38

C++ - Тест 001. Первая программа и типы данных

  • Результат:40бали,
  • Рейтинг балів-8
AD

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:50бали,
  • Рейтинг балів-4
m
  • molni99
  • 26 жовтня 2024 р. 01:37

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:80бали,
  • Рейтинг балів4
Останні коментарі
ИМ
Игорь Максимов22 листопада 2024 р. 11:51
Django - Підручник 017. Налаштуйте сторінку входу до Django Добрый вечер Евгений! Я сделал себе авторизацию аналогичную вашей, все работает, кроме возврата к предидущей странице. Редеректит всегда на главную, хотя в логах сервера вижу запросы на правильн…
Evgenii Legotckoi
Evgenii Legotckoi31 жовтня 2024 р. 14:37
Django - Урок 064. Як написати розширення для Python Markdown Добрый день. Да, можно. Либо через такие же плагины, либо с постобработкой через python библиотеку Beautiful Soup
A
ALO1ZE19 жовтня 2024 р. 08:19
Читалка файлів fb3 на Qt Creator Подскажите как это запустить? Я не шарю в программировании и кодинге. Скачал и установаил Qt, но куча ошибок выдается и не запустить. А очень надо fb3 переконвертировать в html
ИМ
Игорь Максимов05 жовтня 2024 р. 07:51
Django - Урок 064. Як написати розширення для Python Markdown Приветствую Евгений! У меня вопрос. Можно ли вставлять свои классы в разметку редактора markdown? Допустим имея стандартную разметку: <ul> <li></li> <li></l…
d
dblas505 липня 2024 р. 11:02
QML - Урок 016. База даних SQLite та робота з нею в QML Qt Здравствуйте, возникает такая проблема (я новичок): ApplicationWindow неизвестный элемент. (М300) для TextField и Button аналогично. Могу предположить, что из-за более новой верси…
Тепер обговоріть на форумі
Donald Randolph
Donald Randolph30 грудня 2024 р. 02:59
Personal Injury lawyer Santa Monica As an experienced Santa Monica personal injury lawyer, Donald C. Randolph has recovered over $100 Million in verdicts and settlements for our clients. In severe injury cases, this compensation i…
Nirvana Yoga School
Nirvana Yoga School30 грудня 2024 р. 05:13
OAuth2.0 через VK, получение email Nirvana Yoga School is one of the most trusted and reputed traditional Rishikesh yoga courses , India certified by Yoga Alliance, USA. We aim to spread traditional yoga teachings so t…
s
sripark30 грудня 2024 р. 04:47
Mobile app development company in Chennai A Mobile app development company in Chennai focuses on creating personalized mobile applications to meet various business requirements. These companies offer a full range of services,…
a
amit8830 грудня 2024 р. 04:45
Excel in Exams with PSLE Maths Tuition Singapore Preparing for the PSLE can be challenging, but the right guidance makes all the difference. PSLE Maths tuition Singapore offers personalized coaching to help students master key concepts, improv…
a
awinash6230 грудня 2024 р. 04:23
Unlock Your Potential with the Certified Public Accountant Credential" Becoming a Certified Public Accountant (CPA) is a career milestone that opens doors to unparalleled opportunities in the world of accounting and finance. This globally recognized qualification s…

Слідкуйте за нами в соціальних мережах