python断言assertEqual,Python断言
断言运行时断言断言是编程中常用的手段。一般来说,断言就是在语句中放一个返回值总是需要为真的判别式,用来排除设计中逻辑上不应该产生的情况。比如,如果一个函数总是需要输入某个范围内的参数,那么程序员就可以在参数上使用断言,在参数异常时强制程序退出,从而避免程序陷入逻辑混乱。
从某种意义上说,断言对于正常的程序来说不是必须的,但是对于程序调试来说,断言可以帮助程序开发人员快速定位违反某些前提条件的程序错误。在C中,标准在或assert.h头文件中为程序员提供了assert宏,用于在运行时进行断言。
# includeiostream # includecassertchar * array alloc(int n){ assert(n 0);返回新字符[n];//n如果小于0,这里永远不执行} int main(){ char * a=array alloc(-1);返回0;}我们定义一个arrayAlloc函数,它唯一的作用就是在堆上分配一个字节长度为n的数组并返回。为了避免意外,函数arrayAlloc断言参数n,要求它大于0。但是,在main函数中使用arrayAlloc并不满足这个条件,所以在运行时,我们可以看到如下结果:
A.out:test . CPP:6:char * array alloc(int):断言“n 0”失败。在预处理中使用assert的缺点是频繁调用会大大影响程序的性能,增加额外开销。可以定义宏NDEBUG来禁用assert宏,这样可以尽可能避免程序退出。示例代码如下:
# ifdef n debug # define assert(expr)((void)0)# else.# endif一旦定义了NDBUG宏,assert宏就会被展开成无意义的C语句(通常
由编译器优化)。
静态断言和static_assert
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。