Змінні та типи C ++: int, double, char, string, bool

Зміст:

Anonim

Змінні в C ++

Змінна C ++ надає нам іменовану можливість зберігання. Це дозволяє програмісту обробляти дані відповідно до потреби. Кожна змінна має тип на C ++. Тип змінної допомагає визначити розмір і макет карти пам'яті змінної, діапазон значень, які можна зберігати в цій пам’яті, і набір операцій, які можна застосувати до неї.

У цьому підручнику з C ++ ви дізнаєтесь:

  • Змінні в C ++
  • Основні типи змінних у C ++
  • Правила оголошення змінних у C ++
  • Змінні типи даних C ++
  • Назва змінної або ідентифікатори
  • Const Qualifier в C ++
  • Сфера змінних у C ++
  • Перетворення змінних типів
  • Зареєструвати змінні
  • Втеча Послідовності

Основні типи змінних у C ++

Ось основні типи змінних C ++:

Int:

Ціле число - це числовий літерал (пов’язаний із числами) без будь-якої дробової чи експоненціальної частини. Приклад. 120, -90 тощо.

Двомісний номер:

Це значення з плаваючою комою з подвійною точністю. Приклад: 11.22, 2.345

Char:

Літеральний символ створюється шляхом вкладання одного символу всередину одинарних лапок. Наприклад: 'a', 'm', 'F', 'P', '}' тощо.

Поплавок:

Літерал із плаваючою комою - це числовий літерал, який має або дробову форму, або форму експоненти. Наприклад: 1.3, 2.6

Струнні літерали:

Рядковий літерал - це послідовність символів, укладених у подвійні лапки. Наприклад: "Як справи?"

Bool:

Він містить булеве значення true або false.

Правила оголошення змінних у C ++

Ось декілька загальних правил іменування змінних:

  • Ім'я змінної C ++ може містити лише алфавіти, цифри та підкреслення.
  • Ім'я змінної C ++ не може починатися з числа.
  • Імена змінних не повинні починатися з великого символу.
  • Ім'я змінної, яке використовується в C ++, не може бути ключовим словом. Наприклад, int - це ключове слово, яке використовується для позначення цілих чисел.
  • Ім'я змінної C ++ може починатися з підкреслення. Однак це не вважається доброю практикою.

Змінні типи даних C ++

С ++ визначає цілий набір примітивних типів

Тип void не має пов'язаних із ним значень і може використовуватися лише за кількох обставин. Це найчастіше як тип повернення функцій, які не повертають значення.

У арифметичні типи включають в себе символи, цілі числа, логічні значення і числа з плаваючою крапкою. Арифметичний тип, якщо далі поділити на 2 категорії

  1. Типи з плаваючою комою . Плаваючий (або плаваючий тип) представляє десяткові числа. Стандарт IEEE визначає мінімальну кількість значущих цифр. Більшість компіляторів зазвичай забезпечують більшу точність, ніж вказаний мінімум. Як правило, плаваючі зображення представлені 32 бітами, подвійні - 64 бітами, а довгі подвійні - 96 або 128 бітами.
  2. Цілісні типи (до яких належать символи, цілі числа та логічні типи). Boolean типу має тільки два типи значень: ІСТИНА або БРЕХНЯ. Існує кілька типів символів , більшість з яких існують для підтримки інтернаціоналізації. Найосновнішим типом символів є char. Char має такий самий розмір, як один машинний байт, що означає один байт.

В Цілі типи можуть бути підписані або без знака.

Підписаний тип : Вони представляють від’ємні чи додатні числа (включаючи нуль). У підписаному типі діапазон повинен бути рівномірно розподілений між значеннями + ve та -ve. Таким чином, 8-бітний підписаний символ міститиме значення від -127 до 127.

Непідписаний тип : у непідписаному типі всі значення мають> = 0. 8-розрядний непідписаний символ може містити від 0 до 255 (обидва включно).

Назва змінної або ідентифікатори

Ідентифікатори можуть складатися з деяких літер, цифр та символів підкреслення або їх комбінації. Обмеження довжини імені не встановлюється.

Ідентифікатори повинні

  • починаються з букви або підкреслення ('_').
  • І чутливі до регістру; великі та малі літери відрізняються:

// визначає чотири різні змінні int

int guru99, gurU99, GuRu99, GURU99;

Мова С ++ зарезервувала деякі імена для свого використання.

Існує багато прийнятих конвенцій щодо іменування змінних у різних мовах програмування. Дотримання цих конвенцій може покращити читабельність програми.

  • Ідентифікатор повинен давати хоча б деяку вказівку на його значення.
  • Зазвичай імена змінних мають нижчу регістр-guru99, а не Guru99 або GURU99.
  • Класи, які ми визначаємо, зазвичай починаються з великої літери.
  • Ідентифікатори, що містять кілька слів, повинні візуально розрізняти кожне слово. Наприклад, guru99_website, а не guru99website.

Декларація та визначення змінних C ++

Оголошення змінної робить ім'я відомим програмі в тому обсязі, в якому вона визначена. Приклад:

int a=5;int b;char c='A';
int a,b;a=b=1000;
List initializationint a(5);int b{5};

Const Qualifier в C ++

Припустимо, існує змінна buffsize, яка визначає кількість входів, які потрібно взяти у користувача. Тут ми не хочемо змінювати значення buffsize протягом усієї програми. Ми хочемо визначити змінну, значення якої ми знаємо, не повинно змінюватися.

У такому випадку використовуйте ключове слово const

const int bufSize = 512; // input buffer size

Це визначає bufSize як константу. Будь-яка спроба призначити або змінити bufSize видає помилку.

Тут ми не можемо змінити значення об'єкта const після його створення, воно повинно бути обов'язковим, оголошеним та ініціалізованим. В іншому випадку компілятор видає помилку.

const int i = get_size(); // ok: initialized at run timeconst int j = 42; // ok: initialized at compile timeconst int k; // error: k is uninitialized constint i = 42;const int ci = i; // ok: the value in i is copied into ci

Сфера змінних у C ++

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

#include int main(){int sum = 0;// sum values from 1 through 10 inclusivefor (int val = 1; val <= 10; ++val)sum += val; // equivalent to sum = sum + valcout << "Sum of 1 to 10 inclusive is "<< sum <

Ця програма визначає 3 імена, а саме: main, sum і val. Він використовує ім'я простору імен std, разом з двома іншими іменами з цього простору імен-cout та endl.

  • Назва функції "main" визначається поза фігурними дужками. Ім'я функції main, як і більшість інших імен, визначених поза функцією, має глобальний обсяг. Що означає, що після оголошення, імена, що мають загальний обсяг , доступні у всій програмі.
  • Сума змінної визначається в межах блоку, який є тілом основної функції. До нього можна отримати доступ з моменту декларування та по всій іншій частині основної функції. Однак не за його межами. Це означає, що змінна sum має область блоку .
  • Змінна val визначена в області "for statement". Він може бути легко використаний у цьому твердженні, але не в інших місцях основної функції. Він має локальний розмах .

Вкладений обсяг

Сфера дії може містити інші сфери застосування. Вміщений (або вкладений) обсяг згадується як внутрішній обсяг. Область, що містить, є зовнішньою.

#include using namespace std;// Program for illustration purposes only: It is bad style for a function// to use a global variable and also define a local variable with the same nameint reused = 42; // reused has global scopeint main(){int unique = 0; // unique has block scope// output #1: uses global reused; prints 42 0cout << reused << " " << unique << endl;int reused = 0; // new, local object named reused hides global reused// output #2: uses local reused; prints 0 0cout << reused << " " << unique << endl;// output #3: explicitly requests the global reused; prints 42 0cout << ::reused << " " << unique << endl;return 0;}

Вихід №1 з’являється перед локальним визначенням повторно використаного. Таким чином, це вихід

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

42 0

Вихід №2 відбувається після локального визначення повторного використання. Зараз воно входить у сферу застосування. Отже, цей другий висновок просто використовує локальний об'єкт з іменем повторно використаний, а не глобальний і виводить

0 0

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

42 0

Перетворення змінних типів

Змінна одного типу може бути перетворена в іншу. Він відомий як "Перетворення типу". Давайте подивимось правила перетворення різних типів змінних C ++:

Присвоєння non-bool змінній bool дає значення false, якщо значення дорівнює 0, а інакше true.

bool b = 42; // b is true

Віднесення bool до одного з інших арифметичних типів дає 1, якщо bool є істинним, і 0, якщо bool є хибним.

bool b = true;int i = b; // i has value 1

Присвоєння значення з плаваючою комою змінній типу int дає значення, яке є усіченим. Зберігається значення - це частина перед десятковою комою.

int i = 3.14; // i has value 3

Присвоєння значення int змінній типу float призводить до того, що дробова частина стає нульовою. Точність зазвичай втрачається, якщо ціле число має більше бітів, ніж може вмістити плаваюча змінна.

Int i=3;double pi = i; // pi has value 3.0

Якщо ми спробуємо присвоїти змінній без підписаного значення значення, що виходить за межі діапазону, результатом є залишок від значення% (за модулем)

Наприклад, 8-бітний беззнаковий тип символу може містити значення від 0 до 255 включно. Присвоєння значення поза цим діапазоном призведе до того, що компілятор присвоїть залишок цього значення за модулем 256. Отже, згідно з логікою вище, присвоєння -1 8-бітному беззнаковому символу надає цьому об'єкту значення 255.

unsigned char c = -1; // assuming 8-bit chars, c has value 255

Якщо ми спробуємо присвоїти об’єкту підписаного типу значення, яке не входить в діапазон, результат є непередбачуваним. Це невизначено. Може здатися, що програма працює зовні, або вона може вийти з ладу або створити значення сміття.

signed char c2 = 256; // assuming 8-bit chars, the value of c2 is undefined

Компілятор застосовує ці самі типи перетворень, коли ми використовуємо значення одного типу, де очікується значення іншого типу.

int i = 42;if (i) // condition will evaluate as truei = 0;

Якщо це значення = 0, то умова хибна; всі інші (ненульові) значення дають істину. За тією ж концепцією, коли ми використовуємо bool в арифметичному виразі, його значення завжди перетворюється на 0 або 1. Як результат, використання bool в арифметичному виразі зазвичай майже напевно неправильне.

Увага: Не змішуйте підписані та непідписані типи

Вирази, що поєднують підписане та безпідписане, можуть дати несподівані та неправильні результати, коли підписане значення від’ємне. Як обговорювалося вище, підписані значення автоматично перетворюються на непідписані.

Наприклад, в арифметичному виразі типу

x* y

Якщо x дорівнює -1, а y дорівнює 1, а якщо x і y є int, тоді, як очікується, значення дорівнює -1.

Якщо x - це int, а y - без знака, тоді значення цього виразу залежить від того, скільки бітів має ціле число на компіляційній машині. На нашій машині цей вираз дає 4294967295.

Зареєструвати змінні

Доступ до змінних регістрів швидший у порівнянні зі змінними пам'яті. Отже, змінні, які часто використовуються в програмі на C ++, можна помістити в регістри за допомогою ключового слова register . Ключове слово register говорить компілятору зберігати задану змінну в регістрі. Вибір компілятора - вносити його до реєстру чи ні. Як правило, самі компілятори проводять різні оптимізації, які включають внесення деяких змінних до реєстру. Кількість змінних реєстру в програмі на C ++ не обмежена. Але компілятор може не зберігати змінну в регістрі. Це пов’язано з тим, що пам’ять регістрів дуже обмежена і найчастіше використовується ОС.

Визначити:

register int i;

Коментарі

Коментарі - це частини коду, проігноровані компілятором. Це дозволяє програмісту робити нотатки у відповідних областях вихідного коду / програми. Коментарі надходять у формі блоку або в одне рядок. Коментарі до програми є пояснювальними висловлюваннями. Його можна включити до коду С ++, який допомагає кожному, хто читає його вихідний код. Усі мови програмування дозволяють форму коментарів. C ++ підтримує як однорядкові, так і багаторядкові коментарі.

  • Однорядкові коментарі - це ті, які починаються з // і тривають до кінця рядка. Якщо останнім символом у рядку коментаря є \, тоді коментар продовжиться в наступному рядку.
  • Багаторядкові коментарі - це ті, які починаються з / * і закінчуються * /.
/* This is a comment *//* C++ comments can also* span multiple lines*/

Втеча Послідовності

Деякі символи, такі як зворотний простір та контрольні символи, не мають видимого зображення. Такі символи відомі як недруковані символи. Інші символи (одинарні та подвійні лапки, знак запитання та зворотна коса риса) мають особливе значення у багатьох мовах програмування.

Наші програми не можуть використовувати жодного з цих символів безпосередньо. Натомість ми можемо використовувати послідовність виходів для представлення такого символу. Екранна послідовність починається з зворотної скісної риски.

Мова програмування С ++ визначає кілька послідовностей виходу:

Що це робить?

Характер

Нова лінія

\ n

Вертикальна вкладка

\ v

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

\\

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

\ r

Горизонтальна вкладка

\ t

Повернення

\ b

Знак питання

\?

Подача форми

\ f

Оповіщення (дзвоник)

\ a

Подвійна лапка

\ "

Одинарна котирування

\ '

Ми використовуємо послідовність входів, ніби це один символ:

cout << '\n'; // prints a newlinecout << "\tguru99!\n"; // prints a tab followed by "guru99!" and a newline

Ми також можемо писати узагальнені послідовності виходу \ x, за якими слід одна або кілька шістнадцяткових цифр. Або ми використовуємо \, за яким стоїть одна, або дві, або три вісімкові цифри. Узагальнена втеча послідовність представляє числове значення символу. Кілька прикладів (припускаючи набір символів Latin-1):

\7 (bell) \12 (newline) \40 (blank)\0 (null) \115 ('M') \x4d ('M')

Ми можемо використовувати заздалегідь визначені послідовності екранування, як і будь-який інший символ.

cout << "Hi \x4dO\115!\n"; // prints Hi MOM! followed by a newlinecout << '\115' << '\n'; // prints M followed by a newline

Резюме

  • Змінна C ++ надає нам іменовану можливість зберігання.
  • Типи змінних C ++: int, double, char, float, string, bool тощо.
  • Вміщений (або вкладений) обсяг позначається як внутрішній обсяг, а що містить обсяг - зовнішній.
  • Змінна одного типу може бути перетворена в іншу. Він відомий як "Перетворення типу".
  • Доступ до змінних регістрів швидший у порівнянні зі змінними пам'яті.
  • Коментарі - це частини коду, проігноровані компілятором.
  • Деякі символи, такі як зворотний простір та контрольні символи, не мають видимого зображення.