Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C++ лекции.doc
Скачиваний:
22
Добавлен:
21.04.2019
Размер:
536.06 Кб
Скачать

5. Форматированный вывод

Простейшим использованием переменных может быть их вывод в консоль с помощью функции printf.

На самом деле, printf — не обычный вывод на экран, а так называемый форматированный вывод. Это значит, что та строка, которую вы передаете первым аргументом (выводимая строка) сначала определенным образом обрабатывается, после чего уже выводится на экран. Эта строка называется форматной строкой.

В форматную строку можно добавлять специальные последовательности символов, которые будут заменяться форматированным выводом данных. Эти последовательности начинаются с символа «%» (как и символ «\», «%» является экранирующим символом, однако, только для функции printf). В общем случае, функция printf выглядит следующим образом:

printf(<форматная строка>[, значение1[, значение2[...]])

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

printf("%d value is %d, while %d value is %d", 1, 31, 2, -12);

Вместо первого %d будет подставлен второй аргумент функции (первый после форматной строки) — 1. Вместо второго %d будет подставлен третий аргумент функции (второй после форматной строки) — 31, и так далее. В итоге в консоль будет выведено следующее:

1 value is 31, while 2 value is -12

Последовательность %d предназначена для вывода целочисленного значения. Любой целочисленный тип (в том числе и char, и bool) может быть выведен с её помощью в консоль. Что бы вывести значение в другом формате, необходимо использовать соответствующую форматирующую конструкцию:

Where specifier is the most significant one and defines the type and the interpretation of the value of the coresponding argument:

Последовательность

Тип на входе

Выводимый тип

Пример вывода

Целочисленное значение

Символ

y

%d или %i

Целочисленное значение

Целочисленное значение

152

%e

Вещественное

Экспоненциальное представление

3.9265e+2

%E

Вещественное

Экспоненциальное представление

3.9265E+2

%f

Вещественное

Десятичная дробь

392.65

%g

Вещественное

%e или %f (что короче)

392.65

%G

Вещественное

%E или %f (что короче)

3.9265E-11

%o

Целочисленное

Восмеричное

7235

%s

Строка

Строка

text

%u

Целочисленное

Беззнаковое целое

7235

%x

Целочисленное

Шестнадцатеричное

7fa

%X

Целочисленное

Шестнадцатеричное

(заглавными буквами)

7FA

%p

Адрес памяти

Код адреса памяти

B800:0000

%n

Указатель

ничего

нет

%%

нет

нет

%

В следующем примере после каждого вызова функции printf будет написан комментарий (в C комментарии пишутся после символов «//»), который будет показывать вывод соответствующего printf.

#include <stdio.h>

int main()

{

printf("Hello, %s%c\n", "World", '!'); // Hello, World!

int age = 0;

printf("My age is %d years, I'm so %s\n", age, "young");

// My age is 0 years, I'm so young

double apple_count = .5;

printf("I want %d muffins and %f apples\n", 3, apple_count);

// I want 3 muffins and 0.500000 apples

int some_value = 100;

printf("%d in octal notion is %o\n", some_value, some_value);

// 100 in octal notion is 144

printf("%d in hex notion is %o\n", some_value, some_value);

// 100 in hex notion is 64

printf("char with code '%d' is '%c'", 97, 97);

// char with code '97' is 'a'

}

Внимательно следите за соответствием выводимого значения и форматирующего символа! В лучшем случае при их несоответствии (например, при выводе вещественного через %d) на экран выведется мусор, а в худшем (например, при выводе целочисленного значения через %s) — произойдет системная ошибка.

Форматированный вывод функции printf может не просто выводить значения переменных, но и форматировать их. Например, можно задать количество нулей, выводимых после вещественного числа, или задать количество пустого места перед выводимым значением, и так далее. Подробнее о форматировании текста вы узнаете позднее или можете прочитать спецификацию функции: http://www.cplusplus.com/reference/clibrary/cstdio/printf/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]