C语言中assert的作用是什么?

int maxval(int i, int (*f)(int), int (*g)(int)) {
const int fval = f(i);
const int gval = g(i);
return fval > gval ? fval : gval;
}
int ten(int i) {
return 10 * i;
}
int sqr(int i) {
return i * i;
}
int main(void) {
assert( maxval(5, ten, sqr) == 50);
assert( maxval(11, ten, sqr) == 121);
}
最后的assert 是干什么用的

是程序调试很重要的手段,ASSERT( f )在Debug模式下,每次运行到这里后会计算括号中的表达式,如果表达式为0,则中断执行,弹出一个警告框,用户可选择“继续”,“重试”,“忽略”在Release模式下,这句语句不会被编译进代码。ASSERT一般用于程序内部确认参数的正确性,即调用内部函数的时候,要由调用者保证参数的正确,而被调用函数内部,就可以通过ASSERT来检查参数是否满足要求。

C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。

二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。 [1]  目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-05-30
调用assert.h
里面的assert宏
用途错误检测
assert(
maxval(5,
ten,
sqr)
==
50);
《《
maxval(5,
ten,
sqr)
返回值不等于50
输出错误并退出程序。。。。。。。。。。。。。。。。。。
#include
<assert.h>
void
assert(
int
exp
);
功能:宏assert()用于错误检测。如果表达式的结果为零,宏写错误信息到STDERR并退出程序执行。如果宏NDEBUG已经定义,宏assert()将被忽略。
第2个回答  2019-08-12
assert的作用是现计算表达式
expression
,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用
abort
来终止程序运行。
我依稀记得这个assert是调试程序很有用的函数。