торые используются в printf() и других подобных функциях. Строка 16
указывает форматы %d (десятичный), %#х (шестнадцатеричный), %#о (восьмеричный)
для вставки данных в символьный буфер в соответствующем порядке. Простой
оператор вывода в строке 18 выводит готовую строку в системный стандартный вывод.

    Область видимости и объявление переменных

    Неоднозначности области видимости переменных могут легко возникать в
программах как на ANSI С, так и на C++. Например, если существует глобальна
переменная int count, функция может объявить локальную переменную с тем же
именем, не вызвав при этом сообщения компилятора об ошибке:

    int count;	// Глобальная переменная void AnyFunction()
    {
      int count;       // Локальная переменна
     .....
    }

    Область видимости локальной переменной count действует в пределах
объявленной функции. В этой функции локальная переменная count делает
невозможным доступ к глобальной переменной с тем же именем. Для решения этой
проблемы в C++ можно использовать оператор разрешения области видимости ::.
Перепишите приведенную выше функцию следующим образом:

    int count;     // Глобальная переменна
    void AnyFunctionO
    {
      int count;                // Локальная переменна
      count = 1234;       // Присвоить значение локальной переменной
      ::count = 4321;     // Присвоить значение глобальной переменной count
    }

    Теперь она присваивает значение 1234 локальной переменной count и 4321  —
глобальной. Выражение ::count указывает C++, что используется внешн
переменная count, а не локальная (рис. 12.1).


    Рис. 12.1. Оператор разрешения области видимости может открыть доступ к
скрытой глобальной переменной


    Листинг 12.8 демонстрирует использование оператора разрешения видимости
C++. Этот листинг дополнительно иллюстрирует еще одно свойство C++: объявлени
C++ можно вводить в любой точке программы, а не только глобально или в начале
функции, как в ANSI С. Конечно, как и в ANSI С, вы должны объявлять переменные
до их использования.

    Листинг 12.8. SCOPE.CPP (использование оператора разрешения видимости)

    1:    #include <iostream.h>
    2:
    3:    int k = 100; // Глобальная переменна
    4:
    5:    main()
    6:    {
    7:
    8:      int i = 200; // Локальная переменна
    9:      cout « "Global k == " « k « '\n';
    10:     cout « "Local i == " « i « '\n';
    11:     {

    286     Часть III. Программирование на ANSI C++ 
