Главная Случайная страница


Полезное:

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


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Вывод значений типа int





Для вывода значений типа int можно применять функцию printf (). Конструкция %d служит для указания в строке места, где будет вы­водиться целое число. Конструкция %d называется спецификатором формата, поскольку она определяет формат, используемый функцией printf () для отображения конкрет­ного значения. Каждому спецификатору %d в строке формата должно соответствовать значение int в списке выводимых элементов. Таким значением может быть перемен­ная int, константа int или любое другое выражение int. Программист должен сле­дить за тем, чтобы количество спецификаторов формата соответствовало числу значе­ний, потому что компилятор не обнаруживает ошибки подобного рода. В листинге 3.2 представлена простая программа, которая инициализирует переменную, а затем выво­дит значение этой переменной, значение константы и значение простого выражения. Вдобавок она демонстрирует, что происходит в случае невнимательности.

 

Листинг 3.2. Программа printl.с

/* printl.с — демонстрирует некоторые свойства функции printfO */

#include <stdio.h>

int main (void)

{

int ten = 10;

int two = 2;

printf("Выполняется правильно: ");

printf("%d минус %d равно %d\n", ten, 2, ten - two);

printf("Выполняется неправильно: "); ");

printf("%d минус %d равно %d\n", ten); // пропущены 2 аргумента

return 0;

}

Компиляция и запуск этой программы ведет к получению следующего вывода:

Выполняется правильно: 10 минус 2 равно 8

Выполняется неправильно: 10 минус 16 равно 1650287143

 

В первой строке вывода первый спецификатор %d представляет переменную ten типа int, второй — константу 2 типа int и третий — значение выражения ten - two типа int. Однако во второй строке переменная ten применяется для предоставления значения только первому спецификатору %d, а для последующих двух спецификаторов %d значений не предусмотрено, поэтому программа использует для них случайные зна­чения, находящиеся в памяти! (На своем компьютере вы можете получить результат, сильно отличающийся от полученного в этом примере. Может отличаться не только содержимое памяти, но также разные компиляторы будут управлять ячейками памяти по-разному.)

Вас может раздражать тот факт, что компилятор не выявляет настолько очевидную ошибку. Причина связана с необычным поведением функции printf (). Большинство функций принимают заданное количество аргументов, и компилятор может прове­рить правильность указанного числа аргументов. Однако функция printf () может принимать один, два, три и большее количество аргументов, и это препятствует при­менению компилятором обычных методов обнаружения ошибок такого рода. Однако некоторые компиляторы будут использовать нестандартные методы проверки, и пре­дупреждать о возможных неправильных действиях. Тем не менее, лучше всего всегда проверять в функции printf () соответствие количества спецификаторов формата количеству значений, которые подлежат отображению на экране.

 

Date: 2015-12-13; view: 376; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию