128 Часть II. Программирование на C++
\ Предупреждение
Если разрабатываемые вами программы будут зависеть от размеров и диапазонов значений встроенных типов данных, то вы можете столкнуться с тем, что программы не будут переносимы и могут некорректно работать в экстремальных обстоятельствах.
Заглянув в файл помощи, вы можете заметить, что в 32-разрядном контексте тип int имеет те же предельные значения, что и long, а в 16-разрядном — только 64К.
Вещественные числа, float и double, занимают 4 и 8 байт соответственно, но данные в них хранятся гораздо более замысловатым образом. Числа с плавающей точкой используют отведенные им байты как упакованные битовые массивы, в которых часть битов содержат знак, часть порядок числа, а остальные мантиссу (значащие цифры). Точные границы этих типов можно будет потом при необходимости выяснить. Обычно тип float позволяет хранить числа в пределах приблизительно
от 3.4 х Ю-38 до 3.4 х 1038
Числа типа double ограничены значениями
от 1.7 х Ю-3"8 до 1.7 х 10308
Точные значения для всех базовых типов всегда можно найти в файле помощи по ключевой фразе "data types". Будем считать, что при необходимости вы сможете это сделать.
Замечание
¦Нет ничего страшного в том, что вещественные числа из-за своей структуры требуют большего количества команд процессора. Если вам требуется точность, которую они способны обеспечить, то им нет альтернативы.
Спецификаторы
Синтаксически определение переменной выглядит как имя переменной, следующее за именем типа. Чтобы определить целую переменную j, напишите:
int j;
Подобным образом определенные целые по умолчанию являются знаковыми. Следовательно, это определение эквивалентно более развернутому
signed int j;
Знаковые целочисленные типы в старшем значащем бите (msb, most significant bit) хранят знак числа — плюс или минус. Беззнаковые целые исполь-