描述:

断言 assert 是仅在 Debug 版本起作用的宏,它用于检查“不应该”发生的情况。

C 库宏 void assert(int expression) 允许诊断信息被写入到标准错误文件中。换句话说,它可用于在 C 程序中添加诊断。

声明:

下面是 assert() 宏的声明。

void assert(int expression);
参数
expression -- 这可以是一个变量或任何 C 表达式。
如果expressionTRUEassert() 不执行任何动作
如果expression FALSEassert() 会在标准错误 stderr 上显示错误消息,并中止程序执行
返回值

这个宏不返回任何值。

实例

下面的实例演示了 assert() 宏的用法。

让我们在交互模式下编译并运行上面的程序,如下所示:

#include <assert.h>
#include <stdio.h>int main()
{int a;char str[50];printf("请输入一个整数值:");scanf("%d", &a);assert(a >= 10);printf("输入的整数是:%d\n", a);printf("请输入字符串:");scanf("%s", &str);assert(str != NULL);printf("输入的字符串是:%s\n", str);return(0);
}
请输入一个整数值: 11
输入的整数是: 11
请输入字符串: w3cschool
输入的字符串是: w3cschool 
请输入一个整数值: 3
a.out: assert.c:11: main: Assertion `a >= 10' failed.
已放弃 (核心已转储)

C语言再学习-- assert 断言宏相关推荐

  1. C语言再学习 -- 详解C++/C 面试题 1

    参看:<高质量C++ C编程指南>.林锐 对这篇文章记忆犹新,因为之前找工作面试的时候,遇到过一家公司就是用的这套面试题.现在就结合考查的知识点和我总结完 C 语言再学习后的深入理解,来详 ...

  2. C语言再学习 -- 再论内存管理

    之前有总结过内存管理,参看:C语言再学习 -- 内存管理 但现在看来,缺少示例.从新再写一篇文章,着重介绍常见内存错误.跨函数使用存储区.开始吧,再论内存管理!! 发生内存错误是件非常麻烦的事情.编译 ...

  3. C语言再学习 -- 详解C++/C 面试题 2

    (经典)C语言测试:想成为嵌入式程序员应知道的0x10个基本问题. 参看:嵌入式程序员面试问题集锦 1.用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题) #define ...

  4. C语言再学习 -- 时间函数

    在软件设计中经常会用到关于时间的处理,用来计算语句.函数的执行时间,这时就需要精确到毫秒甚至是微妙的时间.我们首先来介绍一下,时间单位: 时间单位还有:秒(s).毫秒(ms).微秒 (μs).纳秒(n ...

  5. C语言再学习 -- 关键字volatile

    上周确实事情挺多的,年会.公司聚餐,一到过年就有忙不完的事分心.还好C语言再学习总结的已经差不多了,年前也不展开别的了,接下来这十几天.总结几篇典型的面试题吧. 言归正传,接下来看看关键字 volat ...

  6. C语言再学习 -- 关键字const

    const 关键字其实我们并不陌生,之前有讲过const修饰数组和指针.现在来详细介绍这个关键字. 参看:[C/C++和指针]著名的<const的思考> 一.const 介绍 1.cons ...

  7. C语言再学习 -- 存储类型关键字

    定义: 是对声明的实现或者实例化.连接器(linker)需要它(定义)来引用内存实体.与上面的声明相应的定义如下:参看:C语言再学习 -- 存储类.链接 C语言中有 5 个作为存储类说明符的关键字,分 ...

  8. C语言再学习 -- 关键字typedef

    参看:C语言再学习 -- 结构和其他数据形式 参看:C语言再学习 -- 关键字struct(转) 参看:常见typedef 用法 参看:关于typedef的用法总结 一.typedef 介绍 type ...

  9. C语言再学习 -- NUL和NULL的区别

    NUL 是ASCII 字符集中 '\0' 字符的名字,它的字节模式为全 0.NULL 指一个其值为 0 的指针.它们都是整型值,其值也相同,所以它们可以互换使用.然而,你还是应该使用适当的常量,因为它 ...

最新文章

  1. Ubuntu下允许Root用户直接登录图形界面
  2. Hp linux tar 解压,tar命令的用法(百度)(HP_UX)
  3. 水晶报表10 注册码
  4. 项目: 用封装的方法实现飞机大战游戏
  5. 大学计算机基础章节知识点,《大学计算机基础》知识点
  6. html中name和id的区别 [ZT]
  7. VirtualBox下Ubuntu利用桥接方式上网
  8. pgsql merge方法
  9. NP、OSPF 缺省路由
  10. Java学习资料-Java容器
  11. 尚硅谷大数据课程flink1.13代码实现与笔记记录
  12. 认知无线电的能量检测
  13. wps如何只让他显示3级标题_怎么设置一二三级标题
  14. 葛道辉,李洪升,张亮,等. 轻量级神经网络架构综述
  15. 福建选择阿里云服务器地域(华南/华东/华北)哪个更好?
  16. python高级练习题:法贝热复活节彩蛋压测试【难度:5级】--景越Python编程实例训练营,不同难度Python习题,适合自学Python的新手进阶
  17. Lepus安装与配置
  18. 你真的理解亲密关系的价值吗?
  19. python判断偶数奇数_Python程序检查数字是奇数还是偶数
  20. 使用WebBrowser控件实现打印 去掉 页眉和页脚

热门文章

  1. 完美解决idea继承maven后,构建项目慢的问题
  2. GinWin命令控制台执行指令
  3. 做爱做的事,做有快感的事
  4. SharePoint:扩展DVWP - 第21部分:实现可维护的三级联动下拉框
  5. Google 联合 Plaxo 对 OpenID 进行改进
  6. Python学习笔记:Dict和Set
  7. CPU指令集是什么东西
  8. shell脚本中一些特殊符号
  9. VNC与RDP的区别
  10. Matlab循环读取txt文件并对其中数据进行计算最后导出为excel