Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник Моя первая программа на С++.docx
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
6 Мб
Скачать
☆

#Define message "Привет!" main()

{

printf(MESSAGE);

printf("Добро пожаловать в мой мир, а теперь убирайся");

}

Так же как и puts(), функция printf() будет выводить на экран строки, заключенные в кавычки, и значения строковых констант и переменных.

Вывод чисел

Для того чтобы отобразить числовые данные и иметь возможность форматировать данные всех типов, спи- сок параметров, передаваемый функции printf(), делится на две части (рис.4.5).

Рис. 4.5. Две части списка параметров функции printf()

Первый параметр называется управляющей строкой или строкой формата*. Этот параметр заключается в кавычки и указывает компилятору, в какой позиции строки должны появиться данные. Строка формата может содержать любой текст вместе с метками, которые называются указателями формата** и опреде- ляют тип данных, а также их расположение.

* Буквальный перевод английских терминов control string или format string. (Прим.перев.)

** В оригинале format specifier. (Прим.перев.)

Каждый указатель формата начинается с символа процента (%), после которого стоит буква, указываю- щая тип данных:

%d целое число

%u беззнаковое целое число

%f вещественное число типа float или double

%e вещественное число в экспоненциальной форме

вещественное число, отображаемое по формату %f

%g или %e, в зависимости от того, какая форма записи является более короткой

%c символ

%s строка

Таким образом, первая часть инструкции printf() записывается так:

printf("%d")

Знак процента говорит компилятору, что за ним последует указатель формата (чтобы отобразить сам сим- вол процента, напишите его дважды: printf("%%");).

Буква d указывает компилятору, что следует отобразить целое число, записанное в десятичной системе счисления (рис.4.6).

Рис. 4.6. Составляющие указателя формата

Второй частью списка параметров является список данных, содержащий литералы, имена констант или имена переменных, значение которых необходимо отобразить на дисплее. Список данных отделяется от строки формата запятой. Между собой все элементы списка данных также разделяются запятыми. Когда компилятор создает объектные коды, он подставляет на место указателей формата значения из списка данных.

Простейший пример использования функции printf() приведен ниже:

printf("%d", 12);

В процессе выполнения этой инструкции значение 12 будет подставлено на место указателя формата

(рис.4.7). В нашем примере мы на самом деле передали

Рис. 4.7. Значение подставляется на место указателя формата

библиотечной функции printf() два параметра: строку формата и числовой литерал12.

Строка формата может содержать и обыкновенный текст с включенными в него указателями формата. На- пример, взгляните на инструкцию:

printf("Мне исполнилось %d лет", 12);

Рис. 4.8. Использование указателя формата внутри строкового литерала

Строкой формата в этом примере является запись

"Мне исполнилось %d лет"

Указатель формата, %d, говорит о том, что мы хотим вставить число между словами "Мне исполнилось" и словом "лет" (рис.4.8). Когда компилятор подставит число12 на место указателя формата, мы увидим сле- дующую фразу:

Мне исполнилось 12 лет

В этом примере функции передается одновременно и строковый литерал, и числовое значение.

В данном случае тот же результат можно получить, передавая всю фразу целиком, как параметр, одной из функций:

printf("Мне исполнилось 12 лет"); puts("Мне исполнилось 12 лет");

Но чтобы комбинировать текст с числовыми константами или переменными, следует использовать именно функцию printf() и указатели формата, как, например, в программе:

main()

{

int age; age = 12;

printf("Мне исполнилось %d лет", age);

}

Эта программа отображает на экране строковый литерал и значение целочисленной переменной с помо- щью одной инструкции (рис.4.9).

Рис. 4.9. Значение переменной подставляется на место указателя формата

Функции printf() можно передать любое число параметров, чтобы отобразить несколько аргументов. При этом необходимо ставить указатель формата для каждого аргумента. Значения в списке данных должны располагаться в том же порядке, что и соответствующие указатели формата: первый пункт из списка дан- ных подставляется на место первого указателя формата, второй— на место второго и так далее. Взгляните на программу:

main()

{

int lucky_1, lucky_2; lucky_1 = 12;

lucky_2 = 21;

printf("Моими счастливыми номерами являются \

%d и %d", lucky_1, lucky_2);

}

Здесь мы определили две целочисленные переменные lucky_1 и lucky_2 и присвоили им начальные зна- чения. Список данных функции printf() содержит два имени переменных (аргумента), которые мы хотим отобразить, так что строка формата тоже должна иметь два указателя формата. Так как обе переменные относятся к типу int, оба указателя формата одинаковы— %d, как показано на рис.4.10.

Рис. 4.10. Использование двух указателей формата

Компилятор подставит значения на место указателей формата, и фраза будет выглядеть так: