断言其实是防止程序意外出错的一种宏,如果其参数计算为假,则程序发出警告,且退出。
最常见的用法就是在函数入口处保证输入参数的正确性。例如有一个单链表,无头,单向不循环,结点含data,next,现在写一个函数,获取指针所指结点的下一个结点的data:
int GetNext(pNode* pn)
{
//如果为空,则出错,因为没有后续结点,没有这一条的话如果传入NULL则程序运行出错
assert(pNode != NULL)

return(pn->next->data);
}

随风飘扬  
没怎么仔细研究。。

好像是用来测试是否满足条件的,如果不满足就执行中断
VB.net里面类似 assert.。。。的写法

什么时候用assert。
  断言是一个包含布尔表达式的语句,在执行这个语句时假定该表达式为 true。如果表达式计算为 false,那么系统会报告一个 Assertionerror。它用于调试目的:
assert(a > 0); // throws an Assertionerror if a <= 0
断言可以有两种形式:
assert Expression1 ;
assert Expression1 : Expression2 ;
  Expression1 应该总是产生一个布尔值。
  Expression2 可以是得出一个值的任意表达式。这个值用于生成显示更多调试信息的 String 消息。
  断言在默认情况下是禁用的。要在编译时启用断言,需要使用 source 1.4 标记:
  javac -source 1.4 Test.java
  要在运行时启用断言,可使用 -enableassertions 或者 -ea 标记。
  要在运行时选择禁用断言,可使用 -da 或者 -disableassertions 标记。
  要系统类中启用断言,可使用 -esa 或者 -dsa 标记。还可以在包的基础上启用或者禁用断言。
  可以在预计正常情况下不会到达的任何位置上放置断言。断言可以用于验证传递给私有方法的参数。不过,断言不应该用于验证传递给公有方法的参数,因为不管是否启用了断言,公有方法都必须检查其参数。不过,既可以在公有方法中,也可以在非公有方法中利用断言测试后置条件。另外,断言不应该以任何方式改变程序的状态。

断言是什么?(编程里面的东西)相关推荐

  1. 两张图教会你编程学习哪些东西

    一:编程 想必很多人和小编曾经有的困惑一样,编程那么多东西,该从哪里学起呢?学什么呢?学完能干什么呢?今天我就把我的总结来说一下吧,有不好的地方希望大家指正,然后相互探讨一起学习,相互进步 首先软件分 ...

  2. 一文搞定Linux环境下线程编程,这些东西老师也不会教你。(史上最详细的线程攻略)

    一.线程的概念 1.1 什么是线程 线程是一个实体,是CPU调度和分派的基本单元,有时我们也可以称它为轻量级的进程.每个线程都包含有表示执行环境所必须的信息,其中包括标识线程 的线程ID.一组寄存器值 ...

  3. [小北De编程手记] : Lesson 05 玩转 xUnit.Net 之 从Assert谈UT框架实践

    这一篇,本文会介绍一下基本的断言概念,但重点会放在企业级单元测试的相关功能上面.下面来跟大家分享一下xUnit.Net的断言,主要涉及到以下内容: 关于断言的概念 xUnit.Net常用的断言 关于单 ...

  4. 《深入理解Scala》——第1章,第1.2节当函数式编程遇见面向对象

    本节书摘来自异步社区<深入理解Scala>一书中的第1章,第1.2节Scala的当函数式编程遇见面向对象,作者[美]Josh Suereth,更多章节内容可以访问云栖社区"异步社 ...

  5. 为什么说可视化编程是糟糕的想法?

    可视化编程语言可以让程序员通过操纵图形元素来创建程序,而无需键入文本命令. 众所周知的例子是 Scratch,这是一种麻省理工学院开发的可视化编程语言,用来教孩子们学编程. 该语言的优势在于新手和普通 ...

  6. ESLint里的规则教会我,无规矩 不编程

    编程风格要统一 编程风格这个东西,说实在的对于刚加入团队的新成员来说还是很难让人完全适应的.因为每人的编程风格都不同,完全是各有千秋的既视感啊 到了新公司后团队中的每个人也都有各自一套的编程习惯,撸起 ...

  7. 如果当初学习编程时能有人给我这些忠告该多好

    Cecily Carver  是多伦多的一位程序媛,和 Jennie Faber 一起创办了一个游戏制作工作室.她喜欢歌剧.舞蹈和弹钢琴.Cecily 在这篇文章分享她在编程道路上的所感所想,给出很多 ...

  8. 写给初学者的JavaScript异步编程和背后思想

    导读: 对于接触JavaScript这门编程语言没有多久的本菜鸡而言,在相当长的一段时间内,我都完全无法理解这门语言中的异步编程,不明白什么叫异步编程以及为什么需要异步编程.为什么顺序执行程序就不行了 ...

  9. Linux下的编程入门

    通常情况下,我们从命令行输入命令每输入一次就能够得到系统的一次响应.一旦需要我们一个接着一个的输入命令而最后才得到结果的时候,这样的做法显然就没有效率.要达到这样的目的,通常我们利用shell程序或者 ...

最新文章

  1. python判断输入类型怎么做_如何检查输入类型?
  2. React.js绑定this的5种方法
  3. 计算机三级考试在线免费题库,国家三级计算机考试题库.docx
  4. IBM服务器巡检流程
  5. 分布式、微服务必须配个日志管理系统才优秀,Exceptionless走起~~~
  6. Linux下的MySQL安装及卸载
  7. 解决Oracle 本地可以连接,远程不能连接问题
  8. php常用库函数(三)
  9. [Markdown]纯文本标记语言MarkdowPad2--MD语法知识
  10. 解析TCP/UDP协议的通讯软件
  11. 计算机毕业设计【HTML+CSS+JavaScript服装购物商城】毕业论文源码
  12. 等离子显示器测试软件,等离子显示器驱动芯片内置ERC功能的测试方法
  13. 本地服务(local Service)的实现
  14. Openzeppelin库 09.Crowdsale
  15. Install Qualcomm Development Environment
  16. 游戏王生命值计算机,游戏王        直接扣生命值的卡有什么啊
  17. 回溯法求解数独问题(最简单,通俗易懂,附C++代码)
  18. 使用YOLOV7训练BDD100K数据集(数据格式转化+训练全流程)
  19. 荷兰黑客将他孩子的乐高列车放在区块链上
  20. 即构互动白板升级:全面支持教育机构上线H5交互课件!

热门文章

  1. TypeScript保存代码时自动编译并运行
  2. Android telephony整体结构
  3. Doris(16):物化视图
  4. java request 获取文件流_HttpRequest获取文件流,HttpResponse输出文件流
  5. k8s 指定节点调度标签
  6. JVM 、JRE 、JDK 和SDK之间的关系
  7. 如何建设人工智能教学体系
  8. Python实现对视频自动打码
  9. journal--1--计算机视觉顶级国际会议和国外知名期刊投稿
  10. 融云助制造业移动信息化建设 加速两化融合创新