Never say die!
2014年(31)
分类: C/C++
2014-11-08 19:50:37
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
assert"断言"的理解及使用:
a. 断言,也即做出一些假设,假设该表达式是正确的,若程序运行正确,该断言程序成立;若断言的表达式不成立,程序运行一定会出错,整个程序就会退出。多用于Debug调试,且能快速定位错误位置;
assert(表达式);
如果表达式的值为假,整个程序将退出,并输出一条错误信息。如果表达式的值为真则继续执行后面的语句。
b. assert是宏,而不是函数,使用这个宏需要添加头文件 #include
c. assert 与 if的区别:
if : 条件成立继续执行、条件不成立也继续执行。
assert:条件成立继续执行、 条件不成立停止执行 。
说明:
可能大家按照我上面的测试,结果与上面的不一致,那我解释一下: 代码运行环境是linux系统,默认会对栈进行保护,上面所涉及的问题就不用考虑了,如果想看到上面的效果,需要去掉栈保护,也即在进行gcc编译的时候,加上-fno-stack-protector
Super_Joki2015-02-02 14:13:08
cjs520_cu:楼主,例子2打印的结果我的和你不一样,我实验得出的结果都是123456
我在linux系统下进行测试的,linux系统默认对栈进行了保护,如果想得到我上面的结果,需要去掉栈保护,也即在编译的时候加上-fno-stack-protector
回复 | 举报KR_201412072014-12-08 16:13:14
银行的金库里有个张三只负责搬钱,送钱来了,就拼命把钱从车里往仓库里搬。要运钱走了,就拼命把钱往车上搬。其他一概不管,日子过得无忧无虑的。直到有一天,运钞车运来的钞票里有几张假钞,也被搬到仓库里存起来了。后来这几张假钞被查出来了。领导二话不说,把张三大骂一通:你怎么就知道搬钱?你就不会先检验一下钱的真假再搬?检查到有假钞你就不用搬了呀?不检查搬进来假钞怎么办?张三心想:一个银行,不确定钱的真假就敢把钱往金库运,还要我一个搬钞的来验钞,这样的领导脑子有毛病吧。