C语言中assert断言的用法?

来源:百度知道 编辑:UC知道 时间:2024/06/19 08:40:20
assert应该是在什么情况下用?什么情况下不能用?我查了下资料 好像说在编译的时候起作用 这又是什么意思??说的详细点 不要抄谢谢 抄也给我裁减裁减 ~
assert我知道是干什么的 我的意思是断言在什么情况下 有必要用 如果是单纯的判断 我用if return 不是很好吗 还不用退出程序

一般来说,在程序必须符合一定条件的情况下,才能继续运行,否则就会产生不可预期的错误。
比如除0操作,就可以对被除数(暂命名为iDividend)进行断言:
assert( iDividend != 0 );
一旦iDividend==0,程序就会报错,并自动退出。

其实也很简单,你自己建一个工程,多试一下各种情况,会对断言体会更深。

  1. assert宏的原型定义在<assert.h>中,其作用是如果它的条件返回错误,则终止程序执行。
    库函数: assert.h
    原型定义: void assert( int expression );
    assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。

  2. 例程:
    #include <stdio.h>
    #include <assert.h>
    #include <stdlib.h>

    int main( void )
    {
           FILE *fp;
        
           fp = fopen( "test.txt", "w" );//以可写的方式打开一个文件,如果不存在就创建一个同名文件
           assert( fp );                           //所以这里不会出错
     &nb