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

Моими счастливыми номерами являются 12 и 21

Значение переменной lucky_1, первого пункта в списке данных, займет место первого указателя формата, а второй пункт списка данных (значение переменной lucky_2) будет подставлен на место второго указате- ля. Если пункты в списке данных поменять местами:

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

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

то значения отобразятся в таком порядке:

Моими счастливыми номерами являются 21 и 12

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

main()

{

int count; float amount; count = 5;

amount = 45.48; printf("Стоимость составляет

%f за %d штук", amount, count);

}

Первое значение из списка данных— число с плавающей точкой— подставляется на место первого указа- теля формата %f. Второе значение— целое число— подставляется на место второго указателя формата

%d. Программа компилируется и выполняется без ошибок, так как типы переменных и указателей форма- та совпадают. Как показано на рис.4.11, значение типа float

Рис. 4.11. Тип данных должен соответствовать указателю формата замещает указатель %f, а значение типа int— указатель %d. В результате имеем: Стоимость составляет 45.580000 за 5 штук

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

printf("Стоимость составляет \

%f за %d штук", count, amount);

компилятор может не сообщить об ошибке, но в результате появится бессмысленная запись:

Стоимость составляет -2.002149Е37 за 16454 штук

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

Перевод строки

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

Если вы хотите перевести курсор на следующую строку, вы должны добавить в строку формата управ- ляющий код «новая строка» \n:

printf("Стоимость составляет %f за %d

штук\n", amount, count);

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

printf("Стоимость составляет %f\n за

%d штук\n", amount, count);

на экране появятся две строки:

Стоимость составляет 45.580000 за 5 штук

Можно использовать любые другие escape-последовательности для регулирования пробелов, подачи зву- кового сигнала или изображения специальных символов.

Преобразование типов данных

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

%o перевод в восьмеричную систему, используй- те только маленькую букву о, не цифру 0

%x перевод в шестнадцатеричную систему

Для того чтобы перевести число из десятичной в другую систему счисления, надо поместить код %o или код %x в строку формата, при этом в список данных вносится число, записанное в десятичной системе. В качестве примера приведена программа, отображающая число17 в шестнадцатеричной и восьмеричной системах счисления:

main()

{

printf("%d равно %x в шестнадцатеричной и %o в \

восьмеричной системах счисления\n", 17, 17, 17);

// так в Си и Си++ можно переносить

// длинные строки символов,

// заключенные в двойные кавычки (ред.)

}

Результат работы программы выглядит следующим образом: