断言 assert() 的使用总结

来源:互联网 发布:代理ip api python 编辑:程序博客网 时间:2024/05/08 13:46

  assert()使用总结

1.头文件

 assert()定义在头文件      #include<assert.h>中.

2.用法

    断言assert在使用的过程中,如果断言表达式expression的值为真,则断言失败,则程序将会终止。


    1.1 . assert()是程序调试的一个重要手段,使用方法为assert(expression).

      它可以在debug和release两种模式下进行使用,并且在两种模式下的使用下产生的结果是不相同的.

a.debug模式

           在debug模式下,当程序运行到assert(expression)这条代码时,就会计算expression这个表达式的值,如果它的值为0,则中断执行,并弹出一个警告框,用户可以选择“继续”,“重试”,“忽略”。也因为此模式下含有调试信息,所以它将不会对程序进行优化,assert对应的宏将会被执行。

b.release模式

           在release模式下,assert(expression)不会被编译进代码,在该模式下,编译器会对代码进行优化,assert对应的宏不会被执行。

     1.2.每个assert()只能检验一个条件,若同时检验多个条件,如果断言失败,则无法判断出是由那个式子失败引起的(eg.assert(a>0 && b<0) 或者 assert(a>0)  && assert(b<0)   这两种写法都是不对的)。

    1.3.在assert()中不能将变量运算放在assert的表达式中。

eg.输出0--10之间的正整数,包含(10)

不能写为assert(i++<10)      如果这样写,那么在i=9时这个程序就会退出,根本不会执行i=10的情况。

         应写为 assert(i<10),i++

   1.4.assert()是用来避免在程序运行时产生的错误,而不是用来处理异常的。错误是在编程中不应该出现的,而异常在编程中有时候是无法避免的。在C语言中产生的异常可以通过条件判断语句来进行处理。


   


原创粉丝点击