下载此beplayapp体育下载

诊断错误及其处理.docx


beplayapp体育下载分类:医学/心理学 | 页数:约16页 举报非法beplayapp体育下载有奖
1 / 16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该beplayapp体育下载所得收入归上传者、原创者。
  • 3.下载的beplayapp体育下载,不会出现我们的网址水印。
1 / 16 下载此beplayapp体育下载
beplayapp体育下载列表 beplayapp体育下载介绍
、诊断错误及其处理
防止程序出错的第一关是编译器。如果遇到约束违规的情况或语法错误,编译器至少会生成一 个诊断错误信息。大多数编译器将其诊断信息分为两类:错误和警告。语法错误很常见, 也较易修
改。调试程序时首先要改正的是语法错误, 调nt型 数的表示范围为-32768至"32767,当累加和sum超过32767时,便向高位进位,而对int型数而 言,最高位表示符号,故sum超过32767后便得到一个负数,while条件当然满足,从而形成无限 循环。此时,最好的解决办法是将 sum定义为long int 型。
五、词法陷井及其处理
(1)=不同于==
这是初学者最易犯的一个错误,符号=作为赋值运算符,符号==作为比较。一般而言, 赋值运算 相对于比较运算出现得更频繁,因此,字符数少的符号=就被赋予了更常用的含义一一赋值运算。
此外,在C语言中赋值符号被作为一种操作符对待,因而重复进行赋值运算(如 a=b=c=5)可很容
易地书写,并且赋值操作还可以嵌入到更大的表达式中。 这种使用上的便利性可能导致一个潜在的
问题:本意是作比较运算时,却可能无意中误写成了赋值运算。 该错误大多数情况下可以通过简单 的要素项重排而防止。从编译器的角度出发,对于相等测试,变元在等号的哪一边无关紧要, 如果
两边都是变量,则需要留意符号“=”的个数。但是,如果一边是常量,则存在可以防止错误的适 当措施。我们何不养成把常量放在比较运算符左边的****惯呢?因为这样一来, 即便漏掉了一个
符号,保证会出现一个编译错误,因为不能给常数赋值。
(2)字符与字符串
C语言中的单引号和双引号含义迥异,用单引号引起的一个字符实际上代表一个整数,整数值对应
于该字符在编译器采用的字符集中的序列值,因此,采用ASCII字符集的编译器而言,的含义与0141
或97严格一致。而用双引号引起的字符串,代表的却是一个指向无名数组起始字符的指针,该数组被
双引号之间的字符以及一个额外的二进制值为零的字符'\0'初始化。
整型数(一般为16位或32位)的存储空间中可以容纳多个字符(一般为 8位),因此,有的 C编译器允许在一个字符常量(以及字符串常量)中包含多个字符。也就是说,用‘yes'代替"yes” 不会被编译器检测到,后者的含义是“依次包含‘y‘、 ‘e'、 's'以及字符'\0'的4个连续 内存单元的首地址”,而前者的含义并没有正确地定义,有些 C编译器会处理成出错,但大多数 C
编译器的理解为“一个整数值,由‘V‘、 'e'、 's'所代表的整数值按照特定编译器实现中定 义的方式组合得到”。因此,这两者如果在数值上有什么相似之处,也完全是一种巧合而已。
(3)整数溢出
来源于网络
C语言为编程者提供了三种不同长度的整数: short int、int和10ng int ,但不管是哪种类型
表示的整数总有一定的范围,越出该范围时称为整数的溢出。例如现有算法要求如下:求满足条件 1+2+3i+nW 32767的最大整数n,请考察如下程序段:
int n=1,sum=0;
whi1e(sum<=32767) {sum+=n; n++;}
printf( n=%d\n”,n-1);
乍看该程序时无错误,但事实上,上列程序中的 while循环是一个无限循环,原因在于int型 数的表示范围为-32768至"32767,当累加和sum超过32767时,便向高位进位,而对int型数而 言,最高位表示符号,故sum超过32767后便得到一个负数,while条件当然满足,从而形成无限 循环。此时,最好的解决办法是将 sum定义为long int 型。
(4)词法分析中的“贪心法”
C语言中的某些符号,例如/、*、=、+等,只有一个字符长,称为单词符符号。而/*、==、++ 等包含了多个字符,称为多字符符号。当 C编译器读入一个字符'/'后又跟了一个字符'*',那么
编译器就必须做出判断:是将其作为两个分别的符号对待,还是合起来作为一个符号对待。 C语言
的处理策略是“贪心法”,即从左到右一个字符一个字符地读入,如果该字符可能组成一个符号, 那么再读入下一个字符,判断已经读入的两个字符组成的字符串是否可能是一个符号的组成部分; 如可能,再读入下一个字符,重复上述判断,直到读入的字符组成的字符串已不再可能组成一个有 意义的符号为止。所以a---b :应理解为(a--)-b ;而将描述命题x除以p所指向的值时,应书写 为:y=x/(*p);而不要写为:y=x/*p ,因为编译器将/*理解为一段注释的开始。
六、C语言常见错误小结 ;.
C语言的最大特点是:功能强、使用方便灵活。C编译的程序对语法检查并不象其它高级语言那么 严格,这就给编程人员

诊断错误及其处理 来自beplayapp体育下载www.apt-nc.com转载请标明出处.

相关beplayapp体育下载 更多>>
非法内容举报中心
beplayapp体育下载信息
  • 页数16
  • 收藏数0收藏
  • 顶次数0
  • 上传人sunhongz2
  • 文件大小35 KB
  • 时间2022-07-23