assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行
原型:#include<assert.h>
void assert*(int expression)
assert的作用是计算表达式expression,如果其值为假,那么它先向stderr打印一条出错信息,
然后通过调用abort来终止程序运行。
用法:在函数开始处检验传入参数的合法性。
#include <stdio.h>
#include <assert.h>
int p(int n);
int main()
{
int m,k;
scanf("%d",&m);
for(k=m;k>=5;k--)
if((p(k)+p(k-2))==2)
{
printf("%d %d",k-2,k);
break;
}
return 0;
}
int p(int n)
{
int i,f=1;
assert(n>=0);
for(i=2;i<n/2;i++)
if(n%i==0)
{
f=0;
break;
}
return f;
}
程序使用了assert宏来限制非法的函数调用:当x>=0不成立时,程序将异常终止,并给出提示信息。
检查非法参数是很有用的:当算法很复杂时,一不小心就会用非法参数调用某些自定义函数。
合理利用assert宏,将给调试带来很大方便。
在编写和调试算法程序中,assert会“迫使”我们编写更高质量的程序!