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

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

Обычно в регистрах центрального процессора одновременно могут располагаться по крайней мере, две переменные типа char или int. Поскольку выбор операционных систем очень широк, универсальных рекомендаций по использованию регистровых переменных не сушествует. В каждом конкретном случае следует обращаться к документации компилятора.

В языке С адрес регистровой переменной с помощью оператора & вычислить невозможно (причины обсуждаются ниже). Это вполне логично, поскольку регистровые переменные хранятся, как правило, в процессоре, а его память не адресуется. Однако на язык C++ это ограничение не распространяется, хотя в этом случае вычисление адреса регистровой переменной может помешать оптимизации программы.

Несмотря на то что в настоящее время смысл спецификатора register существенно расширен по сравнению с традиционным, на практике он по-прежнему применяется в основном к целочисленным и символьным переменным. Таким образом, не следует ожидать от спецификатора register существенного ускорения работы программы, если он применяется к переменным других типов.

-J Инициализация переменных

При объявлении переменной ей можно присвоить начальное значение. Общий вид инициализации выглядит следующим образом.

тип имя_переменной = значение;

Рассмотрим несколько примеров.

Ichar ch = 'а'; int first = 0; float balance = 123.23;

Глобальные и локальные статические переменные инициализируются только при запуске программы. Локальные переменные (за исключением статических) инициализируются каждый раз при входе в блок, где они описаны. Неинициализированные локальные переменные имеют неопределенное значение, пока к ним не будет применен оператор присваивания. Неинициализированные глобальные переменные и локальные статические переменные автоматически устанавливаются равными нулю.

Константы

Константами (constants) называются фиксированные значения, которые программа не может изменить. Способ представления константы зависит от ее типа. Иногда константы также называют литералами (literal).

Символьные константы заключаются в одинарные кавычки. Например, символы ■а1 и '%■ являются константами. В языках С и C++ предусмотрены расширенные символы, которые позволяют использовать другие языки, помимо английского. Их длина равна 16 бит. Для того чтобы определить расширенную символьную константу, перед символом следует поставить букву L. Рассмотрим пример.

|wchar_t wc; wс = L'A’;

Здесь переменной wc присваивается расширенная символьная константа, эквивалентная букве А. Расширенные символы имеют тип wchar_t. В языке С этот тип определяется в заголовочном файле и не является встроенным типом, в отличие от языка C++, где он относится к элементарным типам.

Целочисленные константы считаются числами, не имеющими дробной части. Например, числа 10 и —100 являются целочисленными константами. Константы с плавающей точкой содержат дробную часть, которая отделяется десятичной точкой. Например, число 11.123 представляет собой константу с плавающей точкой. Кроме того, в языке C++ числа с плавающей точкой можно представлять с помощью научного формата.