Имя функции : утверждать
Заголовочный файл : <assert.h>
Прототип функции : void Assert(int выражение);
Функция : Проверка правильности выражения.
Параметр : выражение. Если его значение ложно (то есть 0), то сначала выводится сообщение об ошибке в поток stderr, а затем завершается программа, вызывая команду abort.
Возвращаемое значение : Нет возвращаемого значения
Пополнить :
1. Частые вызовы сильно повлияют на производительность программы и увеличат дополнительные накладные расходы. После отладки вы можете отключить вызовы утверждений, вставив #define NDEBUG перед оператором, содержащим #include <assert.h>.
2. Проверьте корректность параметров, переданных в начале функции.
3. Каждое утверждение проверяет только одно условие, поскольку при одновременной проверке нескольких условий в случае сбоя утверждения невозможно интуитивно определить, какое условие не выполнено.
4. Вы не можете использовать операторы, изменяющие среду, поскольку утверждение действует только в режиме DEBUG. Если вы это сделаете, вы столкнетесь с проблемами, когда программа игнорирует оператор утверждения во время его фактического выполнения, например:
ошибка:
утверждать (я++<100);
Это связано с тем, что если перед выполнением произойдет ошибка, например, i=100, то этот оператор не будет выполнен, а затем не будет выполнена команда i++.
правильный:
утверждать(я<100);я++;
5. Между утверждением и последующими утверждениями должна быть пустая строка, чтобы создать ощущение логической и визуальной последовательности.
6. В некоторых местах утверждение не может заменить условную фильтрацию. Assert используется для предотвращения очевидных ошибок, а не для обработки исключений. Ошибки и исключения бывают разные. Ошибок быть не должно, а исключения неизбежны. Исключения языка C могут обрабатываться посредством условного решения, а другие языки имеют свои собственные механизмы обработки исключений. Очень простое правило использования утверждения — использовать его в начале метода или функции. Если вы используете его в середине метода, вам нужно тщательно подумать, уместно ли это. Функциональный процесс не запущен в начале метода, и проблемы, возникающие во время выполнения функционального процесса, почти все являются исключениями.
Пример программы : Укажите переменную a<80 и выведите результат.
#include<assert.h>#include<stdio.h>intmain(void){inta=50;assert(a<80);//Утверждаем a<80, если оно равно 0, выводим сообщение об ошибке и завершаем программу , в противном случае продолжите выполнение printf (Assertaistruen);return(0);}
Результаты запуска:
Подтверждение истинности