c语言中assert()函数用法
assert()函数的头文件及其函数原型
#include <assert.h>
void assert( int expression );
作用:
assert函数的表达式为假,则终止程序执行; 表达式为真,则继续执行
(注意只有在debug环境下,assert函数有效)
下面以一个例子进行说明:
#include <stdio.h>
#include <assert.h>
int main()//除数为0终止程序
{
int m, n, result;
scanf("%d %d", &m, &n);
assert(n);
result = m / n;
printf("result = %d\n", result);
return 0;
}
运行结果:
case1:除数为2
case2:除数为0,终止程序
assert()的缺点是,频繁的调用会极大的影响程序的性能,增加额外的开销。在调试结束后,可以通过在包含#include <assert.h>的语句之前插入 ==#define NDEBUG ==来禁用assert调用,示例代码如下:
#include <stdio.h>
#define NDEBUG
#include <assert.h>
注意事项
**1.每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败 **
assert( expression1 && expression2 && expression3);
2.assert只在DEBUG环境下生效,如果在release编译环境下视assert()为空语句
下面以一个例子进行说明:
#include<stdio.h>
#include<assert.h>
int main()
{
int i=0;
while(i<=14)
{
assert(++i<=5);
printf("第%d行\n",i);
}
运行结果:
1.在debug环境下运行结果为:
2.在release环境下不执行assert语句陷入第0行死循环。
在编程时应将循环控制变量,置于assert语句外防止陷入死循环