王牌9 扫雷英雄榜——C常见错误与解决方案.pdfVIP

  • 9
  • 0
  • 约1.05万字
  • 约 14页
  • 2018-08-30 发布于湖北
  • 举报

王牌9 扫雷英雄榜——C常见错误与解决方案.pdf

王牌9 以下“解决方案”中的内容对应的是“错误举例”中内容的解决方法。 1. 把“=”误当作“==”使用 错误举例 ect.top = rect.bottom) { MessageBox(hwnd, Invalid rectangle!, NULL, MB_OK | MB_ICONERROR); } 解决方案 因为条件判断误写成了赋值,上面的判断将永远为真,除非rect.bottom 为零。 比较低级却又难以发现的错误。说它低级是因为它属于再基本不过的语法问题;而它之 所以难以发现是因为它不会产生编译错误,唯有在调试过程中跟踪执行才会发现。通常它导 致的后果是某一个条件判断失效或者进一步导致死循环。 2. 使用已释放了的指针 错误举例 最常出现在释放链表时。初学者容易这样写: while (p) { delete p; p = p-next; } 解决方案 这样是很危险的。正确的方法是: while (p) { q = p-next; delete p; p = q; 1 } 3. 在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。 错误举例 main() {staticinta[10]={1,2,3,4,5,6,7,8,9,10}; printf( %d ,a[10]); } 解决方案 C 语言规定:定义时用a[10],表示a 数组有 10 个元素。其下标值由0 开始,所以数组 元素a[10]是不存在的。 4. 输入数据时,企图规定精度。 错误举例 scanf( %7.2f ,a); 解决方案 这样做是不合法的,输入数据时不能规定精度。 5. 输入数据的方式与要求不符。 错误举例 ①scanf( %d%d ,a,b); 输入时,不能用逗号作两个数据间的分隔符,如下面输入不合法: 3,4  输入数据时,在两个数据之间以一个或多个空格间隔,也可用回车键,跳格键tab 。 ②scanf( %d,%d ,a,b); C 规定:如果在“格式控制”字符串中除了格式说明以外还有其它字符,则在输入数据时 应输入与这些字符相同的字符。下面输入是合法的: 3,4  此时不用逗号而用空格或其它字符是不对的。 34 3:4  又如: 2 王牌9 scanf( a=%d,b=%d ,a,b); 输入应如以下形式: a=3,b=4 6. 混淆字符和字符串的表现形式 错误举例 char sex; sex=”M”; … 解决方案 sex 为字符变量,只能存放一个字符。而字符常量的形式是用单撇号括起来的,应改为 sex= ‘M’; “M ”使用双撇号括起来的字符串,它包括两个字符:‘M ’和‘\0’,无法存放到字符变 量sex 中。 7. 赋值写法错误: 错误举例 /*this program is wrong*/ int main(void) { int x, *p; x = 10; p = x; printf(%d, *p);

文档评论(0)

1亿VIP精品文档

相关文档