我是靠谱客的博主 傻傻老师,最近开发中收集的这篇文章主要介绍assert断言的使用与效果 (填坑),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在之前回文串中使用了assert

#include<stdio.h>
#include<string.h>
#include<assert.h>
char * my_strlwr(char * str) //定义一个my_strlwr函数
 
{
assert(str); //str的非空性
char *ret = str; //定义一个ret保存最初的str
while(*str != '') //判断字符串是否结束
{
if((*str >= 'A')&&(*str <= 'Z'))//判断当前啊字符是否是 大写字母
{
*str = *str +32; //根据ascii码表将其转化为小写字母
str++;
}
else
str++;
}
return ret; //返回该字符串数组的首地址

此次解释一下assert的使用方法及效果

assert.h头文件支持的断言库是一个用于辅助调试程序的小型库。它由assert()宏组成,接受个整型表达式作为参数。如果表达式求值为假(非零),assert()宏就在标准错误流(stderr)中写入一条错误信息,并调用abort()函数终止程序(abort()函数的原型在stdlib.h头文件中). assert()宏是为了标识出程序中某些条件为真的关键位置,如果其中的一个具体条件为假,就用assert()语句终止程序。通常,assert()的参数是一个条件表达式或逻辑表达式。如果assert()中止了程序,它首先会显示失败的测试,包含测试的文件名和行号。

简单来说就是计算表达式expression 若其值为假(0)则打印一行报错信息

类似于if else 的作用

if(expression){继续执行}else{报错}

 同时也有缺点  频繁地调用会极大影响程序的性能 增加额外的开销

可以在调试结束后在包含 #include<assert.h>的语句前插入#define NDEBUG来禁止assert调用

使用情景:函数开始处检验输入参数的合法性

eg  assert(n>=0)//如果输入的n值小于零 则报错并且结束程序的运行

注意:1>每个assert只用于检验一个条件 同时及检验多个条件时 如果断言失败 则无法直观的判断哪一个条件失败

           2>不能使用环境改变语句 因为assert只在DEBUG中生效

eg assert(i++<100)  如果出错 在执行前如果i=100 i++就不会被执行

 

最后附上assert报错样例

 11.5

最后

以上就是傻傻老师为你收集整理的assert断言的使用与效果 (填坑)的全部内容,希望文章能够帮你解决assert断言的使用与效果 (填坑)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部