assert()和if

 
首先,这两个处于c语言中的不同等级,assert不过是系统提供的一个宏,展开是个函数,而if则是关键字。
其次,两个的语法也不一样,你可以写if(   1   ){}但是写个assert(1){}却不对,当然,这个区别是第一点造成的
在语义上,if就不用解释了吧。assert的语义如下:在debug编译模式下,如果assert的表达式求值为false,就会中断程序;在release模式下,则没有任何操作。因此可以说,assert就是在调试模式下用来确保制定条件被满足的一种手法,比如说,你想确保a> 0,你就可以写assert(   a   >   0   );如果在运行过程中,a <=0了,代码就会中断,利用调试器很容易发现问题所在。在“应用程序调试 "一书里,作者强烈推荐使用assert,他的代码让同事都抱怨assert太多了。。。。。。
assert用于debug版本,而在release版本它将不被编译,也就是在不修改源代码的情况下,assert能够满足debug和release的两个需求,
但是if肯定会被编译进去
 
程序最终发布的时候,所有的assert语句都会被自动清除。所以assert不属于程序逻辑的一部分。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值