C语言陷阱
u012091015
这个作者很懒,什么都没留下…
展开
-
无限循环陷阱
考虑以下代码有什么问题? void DeadLoop() { unsigned int i = 3; for(; i >= 0; --i) { printf("%o\n", i); } } 提示: 无符号数取值总是非负,所以(i >= 0)恒成立,造成死循环 陷阱特征: 1、循环变量为无符号数; 2、逆序遍历数原创 2013-10-28 00:08:48 · 1045 阅读 · 0 评论 -
最值陷阱
考虑以下求浮点数最大值的代码,有什么问题? #include void CalcMax() { double a[3] = {-2.2, -1.1, -3.3}; double maxValue = DBL_MIN; unsigned int i; for(i = 0; i < 3; ++i) { if(a[原创 2013-10-27 23:42:09 · 746 阅读 · 1 评论 -
溢出陷阱
问题描述:写一个比较两个正数大小的函数,当 a > b 时,返回正数,a = b 时返回 0, a 典型错误: int Compare(int a, int b) { return (a - b); } 测试用例:Compare(INT_MIN, 1) 问题定位:结果溢出 陷阱特征:比较函数中出现减法运算原创 2013-10-28 00:40:30 · 611 阅读 · 0 评论