编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设,可以将断言看作异常处理的高级形式,用于代码调试。

#define _CRT_SECURE_NO_WARNINGS    //关闭安全监察
#include <stdio.h>
#include <stdlib.h>
#include <assert.h> //静态断言的头文件 void main()
{
double db1, db2; printf("输入被除数和除数:\n");
scanf("%lf%lf", &db1, &db2); assert(db2 != ); printf("%f/%f=%f\n", db1, db2, db1 / db2); system("pause");
}

如果除数输入不为0,则程序没有错误,正常运行:

如果输入除数为0,此时触发断言:

同时也可利用宏 NDEBUG 来打开或关闭断言:

#define _CRT_SECURE_NO_WARNINGS    //关闭安全监察
#define NDEBUG //关闭静态断言 #include <stdio.h>
#include <stdlib.h>
#include <assert.h> //静态断言的头文件 void main()
{
double db1, db2; printf("输入被除数和除数:\n");
scanf("%lf%lf", &db1, &db2); assert(db2 != ); printf("%f/%f=%f\n", db1, db2, db1 / db2); system("pause");
}

定义宏 NDEBUG 后,断言关闭,输入除数为0,程序仍然可以执行:

最新文章

  1. 软件工程 speedsnail 冲刺1
  2. 分享php中四种webservice实现的简单架构方法及实例(转)
  3. pydev出现Project interpreter not specified(eclipse+pydev)
  4. C# 堆栈的数据结构 (二)
  5. jquery ajax 参数可以序列化
  6. Oracle 字段是多个值的字符串的查询处理
  7. 程序实现LayoutAnimationController
  8. Web Worker在WebKit中的实现机制
  9. linux下percona-toolkit工具包的安装和使用(超详细版)
  10. SQL-50 将employees表中的所有员工的last_name和first_name通过(&#39;)连接起来
  11. Android中使用ViewGroup.removeViews()时出现NullPointException解决方案
  12. Spring.profile配合Jenkins发布War包,实现开发、测试和生产环境的按需切换
  13. # 2017-2018-2 20155319『网络对抗技术』Exp4:恶意代码分析
  14. MySQL USING 和 HAVING 用法
  15. JS实现文本框和文本域获取焦点focus()时,光标在本文的末尾
  16. C#基础之接口
  17. post和updatebatch区别 delphi
  18. 学习webpack
  19. [loj#2566][BZOJ5333] [Sdoi2018]荣誉称号 树形dp
  20. Drupal启动过程

热门文章

  1. MyEclipse jQuery智能 提示
  2. IdentityHashMap
  3. NetCore Selfhost,IIShost,Windows Service Host详解(自宿主、宿主在IIS,宿主在Windows Service中)
  4. 字节流之文件输出流FileOutputStream
  5. python 生成器的理解和总结
  6. Navigator - BOM对象
  7. validate 不校验的解决办法
  8. LINUX下用C语言历遍目录 C语言列出目录 dirent.h在C/C++中的使用
  9. docker问题:docker端口映射错误
  10. dubbo 相关面试题 有用