Читать «Полный справочник по С++» онлайн - страница 15

Герберт Шилдт

I—J Модификация основных типов

За исключением типа void, основные типы данных могут иметь различные модификаторы (modifiers), которые используются для более точной настройки. Вот их список.

signed unsigned long short

Целочисленные типы можно модифицировать с помощью ключевых слов signed, short, long и unsigned. Символьные типы можно уточнять с помощью модификаторов unsigned и signed. Кроме того, тип double можно модифицировать ключевым словом long. В табл. 2.1 указаны все возможные комбинации типов данных, а также их минимальные диапазоны и приблизительный размер в битах. (Эти значения относятся также и к языку C++.) Учтите, что в этой таблице приведены минимальные диапазоны переменных, а не типичные. Например, в компьютерах, использующих арифметику дополнительных кодов (two's complement arithmetic), минимальный диапазон целого числа простирается от —32768 до 32767.

Применение модификатора signed допускается но является излишним, поскольку по умолчанию все целые числа имеют знак. Наиболее важен этот модификатор при уточнении типа char в тех реализациях языка С, где тип char по умолчанию знака не имеет.

Разница между целыми числами, имеющими и не имеющими знак заключается в интерпретации бита в старшем разряде. Если в программе определено целое число со знаком, то компилятор генерирует код, в котором старший бит интерпретируется как признак знака (sign flag). Если признак знака равен 0, число считается положительным, если он равен I — отрицательным.

Иначе говоря, отрицательные числа представляются с помощью дополнительного кода (two's complement), в котором все биты числа (за исключением старшего разряда) инвертированы, затем к полученному числу добавляется единица, а признак знака устанавливается равным I.

Целые числа со знаком играют весьма важную роль в очень многих алгоритмах, но диапазон их изменения вдвое короче, чем у целых чисел, не имеющих знака. Рассмотрим двоичное представление числа 32767.

|о 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

Допустим, старший бит равен I, значит, это число станет равным — 1. Однако, если бы эта переменная была объявлена как unsigned int, ее значение стало бы равным 65535.

Если модификатор типа используется отдельно (т.е. без указания элементарного типа), по умолчанию предполагается, что объявляемая переменная имеет тип int. Итак, указанные ниже спецификаторы типов эквивалентны.

СпецификаторАналог
signedsigned int
unsignedunsigned int
longlong int
shortshort int
Хотя одного спецификатора int вполне достаточно, многие программисты пред
почитают явно указывать его модификации.

Идентификаторы

В языке C/C++ имена переменных, функций, меток и других объектов, определенных пользователем, называются идентификаторами (indentifiers). Идентификаторы могут состоять из одного или нескольких символов. Первый символ идентификатора должен быть буквой или символом подчеркивания, а следующие символы должны быть буквами, цифрами или символами подчеркивания. Ниже приведены примеры правильных и неправильных идентификаторов.

ПравильноНеправильно
Countlcount
test23hi!there
high_balancehigh...balance