Съдържание
- Идентификатори
- Основни типове данни
- Декларацията на променливите
- Обхват на променливите
Така, след като вече написахме нашата първа програма на C++, в този урок ще увеличим нашите познания, въвеждайки понятието променлива. Това ще ни отвори възможност да пишем по-сложни програми, пресмятащи разни неща и съхраняващи стойностите в така наречените променливи.
Нека разиграем следната ситуация: Запомнете числата 12 и 8. Сега ако умножим първото число по 3 и разделим второто на 2, би трябвало да получим числата 36 и 4. На края ако разделим първото на второто, ще получим 9.
Гореописаните сметки могат да бъдат реализирани на C++ с помощта на две променливи. Програмата би изглеждала по следния начин (не се тревожете ако не разбирате всичко от програмата, това тепърва ще се изясни):
- #include <iostream>
- using namespace std;
- int main ()
- {
- int a, b; // декларация на две целочислени променливи
- a = 12; // инициализиране на първата променлива
- b = 8; // инициализиране на втората променлива
- a = 3 * a; // умножаваме първото число по 3
- b = 8 / 2; // разделяме второто число на 2
- int result = a / b; // съхраняваме резултата в нова променлива
- cout << result; // принтираме резултата в конзолата
- return 0;
- }
Очевидно това е доста прост пример, в който използваме само 2 променливи. Компютърът обаче е способен да запаметява изключително много променливи и да извършва математически изчисления с тях. На малко по-късен етап ще научим и за масивите в C++, които всъщност са просто съвкупност от променливи с един идентификатор.
Всяка променлива се нуждае от уникално име, което да я различава от другите. В примера, който дадохме по-горе, сме използвали a,b и result, но можем да именуваме променливите както пожелаем (стига да отговарят на правилата, които ще въведем след малко).
Идентификатори
Идентификаторите се използват за именуване на променливи. Валиден идентификатор е поредица от една или повече букви, цифри или долни черти (_). Не може да съдържа – препинателни знаци, символи и празни пространства (space). Също така идентификатора на променливата винаги трябва да започва с буква, никога не трябва да започва с цифра. В някои случаи може да започва и с долна черта (_), но е най-добре е да започва с буква.
Друго правило при определяне на идентификатор е да не съвпада с някоя ключова дума от езика C++.
Такива ключови думи са:
alignas, alignof, and, and_eq, asm, auto, bitand, bitor, bool, break, case, catch, char, char16_t, char32_t, class, compl, const, constexpr, const_cast, continue, decltype, default, delete, do, double, dynamic_cast, else, enum, explicit, export, extern, false, float, for, friend, goto, if, inline, int, long, mutable, namespace, new, noexcept, not, not_eq, nullptr, operator, or, or_eq, private, protected, public, register, reinterpret_cast, return, short, signed, sizeof, static, static_assert, static_cast, struct, switch, template, this, thread_local, throw, true, try, typedef, typeid, typename, union, unsigned, using, virtual, void, volatile, wchar_t, while, xor, xor_eq
Ключовите думи се отбелязват от повечето работни среди по специален начин, така че лесно можем да забележим, ако сме използвали такава за нашата променлива.
C++ е чувствителен език. Това означава, че идентификаторите, написани с главни букви, не са еквивалентни на други, написани с малки букви. Например променливата sum не е същата като променливата Sum или SUM. Това са 3 различни идентификатора.
Основни типове данни
При декларацията на променливи в C++ трябва да се посочи типа данни, който желаем да съхраняваме в променливата. Променливи от целочислен тип (int) например, не могат да съхраняват стойности с плаваща запетая.
В следната таблица са представени основните типове данни в C++:
Тип | Описание | Обхват |
---|---|---|
char | Използва се за символи или малки целочислени числа. | signed: -128 до 127 unsigned: 0 до 255 |
int | Използва се за целочислени числа. | signed: -2147483648 до 2147483647 unsigned: 0 до 4294967295 |
short (int) | short int или само short – като int, но с по-малък обхват. | signed: -32768 до 32767 unsigned: 0 до 65,535 |
long (int) | Сходно на int, но с обхват поне колкото на int или повече (зависи от компилатора). | signed: -2147483648 до 2147483647 unsigned: 0 до 4 294 967 295 |
bool | Булева стойност – приема една от две стойности. | True или False |
float | Числа с плаваща запетая. | +/- 3.4e +/- 38 (~7 цифри) |
double | Двойна прецизност за числа с плаваща запетая. | +/- 1.7e +/- 308 (~15 цифри) |
Забележете, че някои от типовете данни могат да бъдат signed и unsigned. Разликата е, че signed могат да бъдат с положителни или отрицателни стойности, докато unsigned могат да бъдат само положителни стойности (и нула). Предимството на unsigned е, че можем да съхраняваме по-големи стойности, стига да сме сигурни, че те винаги са положителни.
Ако не уточним какви точно да бъдат променливите, signed или unsigned, по подразбиране повечето компилатори ще ги приемат като signed.
Декларацията на променливите
За да използваме променлива в C++, трябва първо да я декларирамe – това включва определяне на идентификатора и типа данни. Синтаксисът на декларацията е следният:
типа_данни идентификатор;
Пример:
- int myFirstInteger;
- char myFirstCharacter;
Ако искаме да декларираме повече от една променлива от същия тип, може да ги декларираме на един ред, отделяйки имената чрез запетаи:
- char ch1, ch2, ch3;
Това е еквивалентно на:
- char ch1;
- char ch2;
- char ch3;
Ако желаем да декларираме променлива, която да приема целочислени положителни стойностти, не по-големи от 65 535, то декларацията би изглеждала така:
- unsigned short int myInteger;
Един по-интересен тип променливи, които могат да съхраняват нечислови стойности, по-дълги от един знак, са така наречените стрингове (англ. String).
За да декларираме и използваме променливи от този тип, трябва предварително да включим допълнителната библиотека „string“ в нашата програма. Това става, както вече знаем от предишния урок, посредством #include директивата.
- // отпечатва „Hello String!“ с помощта на стрингове
- #include <iostream>
- #include <string>
- using namespace std;
- int main ()
- {
- string hellostring = „Hello String!“;
- cout << hellostring;
- return 0;
- }
Обхват на променливите
Променливите могат да бъдат разделени на два основни типа по отношение на обхвата им в програмата – локални и глобални. Глобалните променливи се декларират извън всички функции, но могат да се използват/достъпват във всяка една от тях. За разлика от тях локалните променливи се декларират в определена функция и важат само в нея. Поради тази причина например е възможно да декларираме локални променливи с еднакви имена, стига те да са в различни функции.
За повече информация по темата, прочетете урока за Област на променливите в C++.
Автор: Мартин Михайлов