C assert()

void assert() 不是一个函数,它是由 C 标准库提供的一个宏。它有助于为我们的 C 程序添加诊断功能。如果程序所做的假设为假,assert() 将打印一条诊断消息。


void assert(int expression); #where expression can be a variable or any C expression
 

assert() 参数

assert() 接受一个整数类型参数。如果表达式结果为 TRUE,assert() 不做任何操作。如果表达式结果为 FALSE,则它会在 stderr 上显示一条错误消息,并且程序执行被中止。

参数 描述 必需/可选
expression 一个变量或任何 C 表达式 必需

assert() 返回值

此宏不返回任何值。

assert() 示例

示例 1:assert() 宏在 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 

示例 2:assert() 在 C 程序中的工作方式。


#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)