全部学习汇总: GreyZhang/c_basic: little bits of c. (github.com)
最近学习的过程中遇到了C语言中的assert函数,弄不明白这个函数到底是什么用。简单查了一下总结内容如下:
首先,此函数的声明头文件在assert.h中,使用的时候需要包含这个头文件,否则编译的时候肯能会出现warning。函数的原型如下:
void assert(int expression);
其中,expression代表一个结果为整形的表达式。如果这个表达式的计算值为false(也就是0),那么函数将会输出一条提示信息并调用abort函数终止整个程序。
写一个测试代码如下:
#include "stdio.h"
#include "assert.h"
int main(void)
{
int a = 1;
assert(a == 0);
printf("assert has not been run!\n");
return 0;
}
编译与执行结果如下:
我调试的时候使用的系统平台为Windows10 HB,编译成功,运行的时候给出了表达式为0的提示并且终止了程序。其实,在我现在的平台上表现为程序崩溃。修改代码,让表达式不再为0,如下:
#include "stdio.h"
#include "assert.h"
int main(void)
{
int a = 1;
assert(a == 1);
printf("assert has not been run!\n");
return 0;
}
编译与运行结果如下:
这一次,assert没有给出信息输出提示也没有触发程序的终止或者崩溃。在assert函数调用之后的语句也得到了执行。