错误处理和调试2 - C++快速入门31
2012-06-27 21:53
288 查看
错误处理和调试2
让编程改变世界Change the world by program
让函数返回错误代码
这种方式我们已经了然于心,但我们仍有进一步继续讨论的必要。不知道大家还记不记得很久很久以前,我们一起写过的那个求阶乘的栗子:factorial.cpp
其实这个栗子充满隐患,为什么?
我们输入13,从表面上看,程序既没有崩溃也没有报告出错,但它已经不正常了!我们来看下13阶乘的正确结果是:13!== 6,227,020,800
在知道问题后,我们其实也很容易的就可以猜到错误发生的原因:计算阶乘的值超出了计算机所能表达的最大整数(至少在我们这台机子上)。
鉴于这类问题的纠正,小甲鱼在这里教大家一个新技巧:运用 climits 头文件
climits 头文件?
这个头文件从 C 的 limits.h 头文件引用过来的。主要列出了各种数据类型在给定操作系统上的取值范围,并且把每种数据类型的最大可取值和最小可取值都分别定义为一个常量供我们比较。
比如,SHORT_MAX 代表短整数类型在给定系统上的最大可取值,SHORT_MIN 代表短整数类型在给定操作系统上的最小可取值。
USHORT_MAX 代表无符号整数类型的最大可取值。
在这个程序里,为了判断阶乘计算的结果没有超出一个无符号长整数的最大取值,我们可以使用 ULONG_MAX 来提前获得这个值进行对比。
一起动手来修改这个代码:factorial2.cpp(课件及源代码下载地址)
有些程序员喜欢使用异常(咱们将在稍后学习)而不是使用 return 语句。
反对使用这个栗子程序里所演示的技巧的主要理由是:把各种出错代码进行处理的语句混杂在程序的主干部分既不利于模块化编程,又容易干扰正常的思考!
[buy] 获得所有教学视频、课件、源代码等资源打包 [/buy]
[Downlink href='http://urlxf.qq.com/?yaeyQjq']视频下载[/Downlink]
[Downlink href='http://kuai.xunlei.com/d/LZTQOUUKQFZQ']备胎下载[/Downlink]
相关文章推荐
- 错误处理和调试2 - C++快速入门31
- 错误处理和调试 - C++快速入门30
- 错误处理和调试 - C++快速入门30
- 快速入门C++ 11(虚继承、错误处理和调试)
- C++入门(13):错误处理和调试
- C++学习笔记5__错误处理和调试 动态内存 副本构造器
- Glide 入门到精通之十一 ——异常:调试和错误处理
- windows真机调试win+R报adb server version (31) doesn't match this client ...错误的处理
- 快速浏览了“调试和错误处理”
- 【C++】【学习笔记】【030-031】错误处理和调试
- 01-C#入门(调试和错误处理)
- Python学习笔记(八):面向对象编程、错误调试和测试(快速入门篇)
- Windows C++编译调试错误问题处理持续更新
- Swift快速入门之可选类型与错误处理
- 【vs调试】C/C++ 错误处理(文档):未处理的异常: 0xC0000005: 读取位置 0x00000000 时发生访问冲突
- C++快速入门 (十六) 预编译处理命令
- 复杂的数据类型3 - C++快速入门09
- C++错误调试集锦
- 【C++错误处理】multiple definition of
- Eclipse快速入门:远程调试Java应用