#include <iostream> #include <cassert> int main(){ int a =5; int b =3; // 检查 a 是否大于 b assert(a > b); // 如果 a 不大于 b,程序将在这里终止,并输出错误信息 std::cout<<"a is greater than b"<< std::endl; return0; }
输出结果
当运行上述程序时,由于 a 确实大于 b,所以程序将正常执行,并输出:
a is greater than b
如果我们修改 a 的值为 2,使其不大于 b,程序将输出错误信息并终止:
Assertion failed: a > b, file main.cpp, line 8.
断言的高级用法
assert 宏还可以接受一个额外的表达式,用于输出自定义的错误信息:
#include <iostream> #include <cassert> int main(){ int x =10; int y =0; // 使用自定义错误信息 assert(y !=0&&"Division by zero error"); int result = x / y;// 这行代码将不会执行,因为断言已经失败 return0; }
当运行上述程序时,由于 y 为 0,断言将失败,并输出:
Divisionby zero error
Assertion failed: y !=0&&"Division by zero error", file main.cpp, line 8.