Стандартные идентификаторы – используемые в программе предопределенные имена стандартных информационных объектов (например, обозначения стандартных функций и директив препроцессора), могут использоваться и в качестве идентификаторов пользователя (sin, cos, printf, …).
Идентификаторы, начинающиеся с одного (_) или двух символов подчеркивания (__), резервируются для системных целей и не рекомендуются к использованию в качестве имен, выбираемых пользователем.
Идентификатор пользователя
– используемая программистом для обозначения информационных объектов программы последовательность:
· прописных или строчных букв латинского алфавита (в последних версиях компиляторов допускаются и символы кириллицы); хороший стиль предполагает запись идентификаторов переменных строчными буквами;
· цифр и символов подчеркивания;
· начинающаяся с буквы или символа подчеркивания (хотя не рекомендуется начинать идентификаторы с символа подчеркивания, так как они используются в системных программах и библиотеках);
· зависящая от регистра клавиатуры (различаются прописные и строчные буквы, поэтому имена Summa и summa обозначают разные переменные);
· имеющая произвольную длину;
· представляющая собой мнемоническое (смысловое) имя (идентификаторы, не имеющие смысловой нагрузки, затрудняют чтение и понимание программы).
Для обозначения информационных объектов программы (или как первые символы их идентификаторов) желательно использовать:
- буквы i, j, k, l, m, n для обозначения целых значений;
- буквы f, d - для обозначения вещественных значений;
- букву s – для строк;
- букву р – для указателей.
В многословных идентификаторах для наглядности отдельные слова отделяют друг от друга символом подчеркивания (например, my_var).
В качестве идентификаторов пользователя нельзя использовать ключевые слова и зарезервированные идентификаторы и можно ( но не надо ) использовать стандартные идентификаторы.
Длина идентификатора зависит от компилятора. Большинство компиляторов различает идентификаторы по первым 32 символам.Для большинства препроцессоров уникальны обозначения, различающиеся в первых 6 символах. Использование длинных обозначений и имен идентификаторов может вызвать проблемы переносимости для некоторых компиляторов. Для того чтобы избежать этих проблем, программа должна хранить такими короткими, какими только можно, имена для препроцессора, локальные и внешние имена.
Константы
Константа – значение, не изменяемое при выполнении программы.В С++используются константы следующих видов:
· литералы,
· именованные константы,
· препроцессорные константы,
· константы перечислений.
Литералы
Литерал – неименованная константа – синтаксически правильная конструкция, представляющая фиксированное значение определенного типа, записываемое непосредственно в тексте программы. Тип константы определяется по записи ее литерала.
В качестве литералов в С++ могут использоваться:
§ целые константы:
o десятичные 33 44 -52 8 -461 0 2010
o восьмеричные 0737 0152 -0121
o шестнадцатеричные 0X2F56 0x15c -0x2а13b 0X7d83
§ вещественные константы 0. 25 0. 25f -56. 12е-12
§ логические константы true false
§ символьные ( литерные ) константы ‘K’ ‘z’ ‘2’
§ строковые константы “the first number” “1234”
§ неопределенный указатель NULL
Целые константы
Целые константы записываются в виде десятичных (decimal), восьмеричных (octal) и 16-ричных (hexadecimal) целых чисел. Запись восьмеричного литерала начинается с цифры 0, а запись 16-ричного литерала начинается символами 0x(или 0Х).Буквы от A(a) до F(f) используются для записи значений от 10 до 15 в шестнадцатеричной системе счисления. Появление в записи восьмеричной константы недопустимой цифры 8 или 9 воспринимается как ошибка. Например, выполнение операторов:
int a= 0 8;
cout << a << endl;
дает ошибку компиляции illegal digit '8' for base '8'
Выполнение операторов:
int a= 0 10;
cout << a << endl;
дает в качестве результата значение 8.
Выполнение операторов:
int a= 0x10;
cout << a << endl;
дает в качестве результата значение 16.
Выполнение операторов:
int b= 0xa;
cout << b << endl;
дает в качестве результата значение 10.
Целые литералы могут быть:
- длинными целыми (определяются суффиксом – буквой l или L – тип long, стоящей после константы, и занимают 4 байта). Например: 12L, -1234567890L, 1234567890l – длинная целая десятичная константа; 0525L – длинная целая восьмеричная константа; 0ХABCL – длинная целая шестнадцатеричная константа.
- б еззнаковыми целыми (явно определяются суффиксом – буквой u или U – тип unsigned, стоящей после константы, и занимают 4 байта). Например: 12U, 1245U или 1245u – беззнаковая целая десятичная константа; 525UL (или 525 LU, разрешается комбинировать оба суффикса в любом порядке) – беззнаковая длинная целая десятичная константа.
Константы в С++ изображаются без знака. Отрицательные константы получаются применением операции «унарный минус» к соответствующей положительной константе.
Вещественные константы
Литералы с плавающей точкой (вещественные константы) представляются числами с фиксированной или с плавающей точкой двойной точности (т.е. имеющими тип double – двойная точность), всегда в десятичной системе счисления. Для них возможно задание типа-суффикса: F или f – тип float – одинарная точность; L или l – тип long double – повышенная точность. При отсутствии суффикса подразумевается тип double.
Даже не отличаясь по значению от целых констант, константы с плавающей точкой имеют другую форму внутреннего представления в компьютере, требующую при операциях с такими константами использования арифметики с плавающей точкой.
Компилятор распознает вещественные константы по внешним признакам. Литералы с плавающей точкой могут включать:
целую часть – последовательность цифр;
десятичную точку;
дробную часть – последовательность цифр;
символ экспоненты e или E;
экспоненту в виде целой константы (может быть со знаком).
[(целая часть)]. [ (дробная часть) ] [e или E ± целая константа] [l или L или f или F]
Символы [ ] обозначают, что компонент может отсутствовать. Любая часть из нижеследующих пар (но не обе сразу) может быть пропущена: целая или дробная; десятичная точка или символ е (Е) и экспонента в виде целой константы.
Например:
456. 73f 23. 678 5F // 4 байта (тип float)
456. 73 23. 678 5 // 8 байтов (тип double по умолчанию)
15. 75 . 75 // 8 байтов (тип double по умолчанию)
1. 575Е1 . 0075е2 //15.75 0.75
1575е-2 -. 125 //15.75 -0.125
-0. 0025 -. 175Е-2 //-0.0025 -0.00175
-2. 5е-3 25е-4 //-0.0025 -0.0025
1298760. 0 -0. 5437634Е-6 0. 1е9 //1298760. 0 -0 .000000 5437634 0. 100000000
12345678967. 54675l 12345463754. 9L // (тип long double)
12345f
Предельные значения констант разных типов доступны в программах с помощью стандартизованных препроцессорных констант заголовков <сlimits> или <limits.h>, <сfloat> или <float.h> (Таблицы 1.3, 1.4).
Таблица 1.3 Константы предельных значений диапазонов типов
<сlimits> или <limits.h> CHAR_MIN CHAR_MAX UCHAR_MAX SHRT_MIN SHRT_MAX USHRT_MAX INT_MIN INT_MAX UINT_MAX <сfloat> или <float.h> FLT_MIN FLT_MAX DBL_MIN DBL_MAX LDBL_MIN LDBL_MAX | -128 127 255 -32768 32767 65535 -2 147 483 648 2 147 483 647 4 294 967 295 1.17549e-038 3.40282e+038 2.22507e-308 1.79769e+308 2.22507e-308 1.79769e+308 |
Таблица 1.4 Константы для вещественных типов
<сfloat> или <float.h> | |
FLT_RADIX | Основание экспоненциального представления (2, 16) |
FLT_DIG | Количество верных десятичных цифр для типа float |
FLT_EPSILON | Минимальное х такое, что 1.0+х ≠1.0? где х принадлежит типу float |
FLT_MAX_EXP | Максимальное n такое, что (FLT_RADIXn -1)представимо в виде числа float |
FLT_MAX_10_EXP | Максимальное n такое, что 10n представимо как float |
FLT_MIN_EXP | Минимальное n такое, что 10n представимо в виде нормализованного числа типа float |
FLT_MIN_10_EXP | Минимальное отрицательное целое n такое, что 10n -в области определения чисел типа float |
DBL_DIG | Количество верных десятичных цифр для типа double |
DBL_EPSILON | Минимальное х такое, что 1.0+х ≠1.0, где х принадлежит типу double |
DBL_MAX_EXP | Максимальное n такое, что (FLT_RADIXn -1)представимо в виде числа double |
DBL_MAX_10_EXP | Максимальное n такое, что 10n представимо как double |
DBL_MIN_EXP | Минимальное n такое, что 10n представимо в виде нормализованного числа типа double |
DBL_MIN_10_EXP | Минимальное отрицательное целое n такое, что 10n -в области определения чисел типа double |