void assert() 不是一个函数,它是由 C 标准库提供的一个宏。它有助于为我们的 C 程序添加诊断功能。如果程序所做的假设为假,assert() 将打印一条诊断消息。
void assert(int expression); #where expression can be a variable or any C expression
assert() 接受一个整数类型参数。如果表达式结果为 TRUE,assert() 不做任何操作。如果表达式结果为 FALSE,则它会在 stderr 上显示一条错误消息,并且程序执行被中止。
| 参数 | 描述 | 必需/可选 |
|---|---|---|
| expression | 一个变量或任何 C 表达式 | 必需 |
此宏不返回任何值。
#include <assert.h>
#include <stdio.h>
int main () {
int x;
char string[50];
printf("Please enter an integer value: ");
scanf("%d", &x);
assert(x >= 10);
printf("Entered integer value is %d\n", x);
printf("Please enter a string: ");
scanf("%s", string);
assert(string != NULL);
printf("Entered string is: %s\n", string);
return(0);
}
输出
Please enter an integer value: 5 Entered integer value is 5 Please enter a string: Programming Entered string is: Programming
#include <stdio.h>
#include <assert.h>
int main(int argc, const char * argv[])
{
int expres = 1;
printf("Expression is %d\n", expres);
/* Assert should not exit in this case since exp is not 0 */
assert(expres);
expres= 0;
printf("Expression is %d\n", expres);
assert(expres);
return 0;
}
输出
Expression is 1 Expression is 0 assert: assert.c:24: main: Assertion `expres' failed. Aborted (core dumped)