#программирование с нуля #программирование для начинающих #программирование на C++
В данной статье будет рассмотрено:
- Допустимые имена переменных в C++
- Недопустимые имена переменных в С++
- Целочисленные типы
- Тип short, int, long, long long
- Типы без знаков
- Выбор целочисленного типа
- Целочисленные литералы
Допустимые и недопустимые имена переменных в C++
В C++ приветствуется назначение переменным осмысленных имен. В C++ необходимо придерживаться следующих простых правил именования:
- В именах разрешено использовать только алфавитные символы. цифры и символ подчеркивания( _ )
- Первым символом имени не должна быть цифра
- Символы в верхнем и нижнем регистре рассматриваются как разные
- В качестве имени нельзя использовать ключевое слово C++.
- На длину имени не накладываются никакие ограничения, и все символы в имени являются значащими. Однако некоторые платформы, могут накладывать ограничения
- Имена, которые начинаются с двух или с одного символа подчеркивания и следующей за ним буквы в верхнем регистре, зарезервированы для использования реализациями C++, по-другому с ними имеют дело компиляторы и ресурсы.
Последнее правило немного отличается от других, поскольку использование такие имен не вызывает ошибку компиляции, но может привести к неопределенному поведению программы. Примеры допустимых и недопустимых имен в C++:
int poodle; // допустимое
int Poodle; // допустимое (отличается от предыдущего имени)
int POODLE; // допустимое(отличается от других двух имен)
Int terrier; // недопустимое вместо Int, нужно использовать int
int my_stars3; // допустимое
int _Mystars3; // допустимое, но зарезервированное
int 4ever; // недопустимое, начинается с цифры
int double; // недопустимое, ключевое слово в C++ double
int begin;// допустимое, не является ключевым словом
int _fools;// допустимое, но зарезервированное
int the_very_best_variable_i_can_be_version_112; // допустимое
int honky-tonk; // недопустимое, дефисы не разрешены
Целочисленные типы
Целыми являются числа без дробной части, к примеру 35,1,404,-531,0. Язык может представить только подмножество целых чисел. C++ предоставляет несколько вариантов. Благодаря этому вы можете выбрать такой целочисленный тип, который будет лучше всего отвечать конкретным требованиям программы. Они различаются друг от друга объемом памяти, выделяемой для хранения целого значения. Чем больше объем памяти, тем шире диапазон представляемых целочисленных значений. Некоторые типы могут представлять из себя диапазон положительных, так и отрицательных значений(со знаком). А другие только положительные(без знака).
Целочисленные типы short, int, long, long long
Память компьютера состоит из единиц - биты. Используются различное количество битов для хранения значений, типы short,int,long,long long могут представлять до четырех различных целочисленных диапазонов. Не все так просто. Каждый тип имеет определенную ширину.
Тип short имеет ширину не менее 16 битов;
Тип int как минимум такой же, как short;
Тип long имеет ширину не менее 32 битов и как минимум такой же, как int;
Тип long long имеет ширину не менее 64 битов и как минимум такой же, как long;
Максимальные значения и байты целочисленных типов
- Байты:i
nt 4 байта
short 2 байта
long 4 байта
long long 8 байтов - Максимальные значения:
int - 2147483647
short - 32767
long 2147483647
long long - 9223372036854775807
Типы без знаков
Каждый из только что рассмотренных четырех целочисленных типов имеет беззнаковую версию, которая не может хранить отрицательные значения, За счет этого можно увеличить наибольшее значение, которое способна хранить переменная. К примеру тип short представляет диапазон значений от -32768 до 32767, а его беззнаковый вариант представляет диапазон от 0 до 65535. Чтобы создать беззнаковую версию надо использовать ключевое слово unsigned. Вот примеры:
unsigned short // тип short без знака
unsigned int // тип int без знака
unsigned quarterback // тоже тип int без знака
unsigned long // типlong без знака
unsigned long long // тип long long без знака
Приведу пример программы:
*знак решетки*include <iostream>
*знак решетки*include <climits> // определяет INT_MAX как наибольшее значение int
*знак решетки*define ZERO 0 // создает символ zero для значения 0
int main()
{
setlocale(LC_ALL, "Ru");
using namespace std;
short sam = SHRT_MAX; // инициализирует переменную максимальным значением
unsigned short sue = sam;
cout << "У Сэма имеется " << sam << " долларов, а у Сью " << sue;
cout << " долларов на депозите" << endl
<< "Добавьте по одному к каждому" << endl << "Сейчас " << endl;
sam = sam + 1;
sue = sue + 1;
cout << sam << endl << sue << endl;
sam = ZERO;
sue = ZERO;
cout << sam << endl << sue << endl;
sam = sam - 1;
sue = sue - 1;
cout << sam << endl << sue << endl;
return 0;
}
Вот что консоль нам выдает:
У Сэма имеется 32767 долларов, а у Сью 32767 долларов на депозите
Добавьте по одному к каждому
Сейчас
-32768
32768
0
0
-1
65535
В этой программе переменным типа short(sam) и unsigned short(sue) присваивается максимальное значение short, которое в нашей системе составляет 32767. Затем к значению каждый переменной прибавляется 1. С переменной sue все прошло гладко, поскольку новое значение меньше максимального значения для целочисленного беззнакового типа. А переменная sam вместо 32767 получает значение - 32768! Аналогично и при вычитании единицы от нуля для переменной sam все пройдет гладко, а вот беззнаковая переменная sue получает значение 65535. Как вы видите, эти целые числа ведут себя почти так же, как и счетчик пробега. После достижения предельного значения отсчет начинается с другого конца диапазона.
Выбор целочисленного типа
Какой из целочисленного типа следует использовать, учитывая богатство их выбор? В общем случае, тип int имеет наиболее естественным. Если нет веской причины для выбор типа, то лучше всего использовать тип int.
Целочисленные литералы
Целочисленные литерал, или константа, представляет собой число, записываемое явно, такое как 212 или 1755. С++ позволяет записывать целые числа в 3 различных системах счисления с основаниями:
- 8
- 10
- 16
Для идентификации основания числовой константы в С++ используется первая одна или две цифры. Если первая цифра находится в диапазоне 1-9, то это десятичное(основание 10). Если первой цифрой является 0, а вторая находится в диапазоне 1-7, то это число восьмеричное(основание 8), Если первыми двумя символами являются 0x или 0X, то это шестнадцатеричное(основание 16). Вот пример:
*знак решетки*include <iostream>
int main()
{
using namespace std;
int chest{ 42 }; // 10-меричная форма записи или же литерал
int waist{ 0x42 }; // 16-меричная форма записи или же литерал
int inseam{ 042 }; // 8-меричная форма записи или же литерал
cout << chest << " " << waist << " " << inseam << endl;
waist, inseam = 42;
cout << chest << " " << hex << waist << " " << oct << inseam << " " << dec << waist << endl;
return 0;
}
Консоль выводит следующий результат:
42 66 34
42 42 52 66
Эти системы служат для удобства.
Конец
Спасибо если вы дочитали до этого текста. Я пытался изложить понятно. Дайте знать если вы открыли для себя что-то новое или что-то поняли. Советую прочитать 1 часть про функции в С++. Ссылки на другие мои статьи находится ниже
Моя самая первая статья - ссылка
Моя вторая статья - ссылка
Моя статья про функции ссылка
Спасибо за прочтение, до свидания