РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
575 of 815 menu

Макрос assert

Макрос assert используется для проверки условий во время выполнения программы. В параметр макроса мы передаем выражение, которое должно быть истинным. Если выражение истинно, программа продолжает работу. Если выражение ложно, макрос выводит диагностическое сообщение в поток ошибок и вызывает функцию abort, которая аварийно завершает программу.

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

Синтаксис

#include <cassert> assert(expression);

Пример

Давайте проверим, что переменная x действительно равна 5. Если это так, программа завершится успешно:

#include <iostream> #include <cassert> using namespace std; int main() { int x = 5; assert(x == 5); cout << "Assert passed" << endl; return 0; }

Результат выполнения кода:

"Assert passed"

Пример

А теперь давайте передадим в assert ложное условие. Программа выведет сообщение об ошибке и завершится аварийно:

#include <iostream> #include <cassert> using namespace std; int main() { int x = 3; assert(x == 5); cout << "This line will not be printed" << endl; return 0; }

Результат выполнения кода (приблизительный):

"Assertion failed: x == 5, file main.cpp, line 8"

Обратите внимание: строка с выводом текста "This line will not be printed" не выполнится, так как программа завершится на макросе assert.

Смотрите также

  • макрос static_assert,
    который проверяет условие на этапе компиляции
  • функция abort,
    которая аварийно завершает программу
  • оператор throw,
    который генерирует исключение
  • класс exception,
    который является базовым классом для исключений
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить