C语言教程 第16章.doc

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
C语言教程 第16章

C语言教程 第16章 本文由yuandadong贡献 ppt文档可能在WAP端浏览体验不佳。建议您优先选择TXT,或下载源文件到本机查看。 第16章 常见错误和程序调试 16章 16.1 16.2 常见错误分析 程序调试 要真正学好 、用好C并不容易,“灵活”固然是 要真正学好C、用好 并不容易 并不容易, 灵活” 好事,但也使人难以掌握, 好事,但也使人难以掌握,尤其是初学者往往出 了错还不知怎么回事。 编译程序对语法的检查 了错还不知怎么回事。C编译程序对语法的检查 不如其他高级语言那样严格(这是为了给程序人员 不如其他高级语言那样严格 这是为了给程序人员 留下“灵活”的余地)。因此, 留下“灵活”的余地 。因此,往往要由程序设计 者自己设法保证程序的正确性。调试一个C程序 者自己设法保证程序的正确性。调试一个 程序 要比调试一个PASCAL或FORTRAN程序更困难 要比调试一个 或 程序更困难 一些。需要不断积累经验, 一些。需要不断积累经验,提高程序设计和调试 程序的水平。 程序的水平。 ? C语言有些语法规定和其他高级语言不同,学习 语言有些语法规定和其他高级语言不同, 语言有些语法规定和其他高级语言不同 过其他高级语言的读者往往按照使用其他高级语 言的习惯来写C程序 这也是出错的一个原因。 程序, 言的习惯来写 程序,这也是出错的一个原因。 16.1 常见错误分析 下面将初学者在学习和使用 语言(不包括 下面将初学者在学习和使用C语言 不包括 语言 不包括C++)时 时 容易犯的错误列举出来,以起提醒的作用。 容易犯的错误列举出来,以起提醒的作用。这些 内容在以前各章中大多已谈到,为便于查阅, 内容在以前各章中大多已谈到,为便于查阅,在 本章中集中列举,供初学者参考,以此为鉴。 本章中集中列举,供初学者参考,以此为鉴。 ? (1) 忘记定义变量。如: 忘记定义变量。 main( ) {x=3; y=6; printf(%d\n ,x+y); , } C要求对程序中用到的每一个变量都必须定义其 要求对程序中用到的每一个变量都必须定义其 类型,上面程序中没有对x、 进行定义 进行定义。 类型,上面程序中没有对 、y进行定义。应在函 数体的开头加int x,y;这是学过 这是学过BASIC和 数体的开头加 , 这是学过 和 FORTRAN语言的读者写 程序时常见的一个错误。 语言的读者写C程序时常见的一个错误 语言的读者写 程序时常见的一个错误。 语言中, 在BASIC语言中,可以不必先定义变量类型就可 语言中 直接使用。 直接使用。在FORTRAN中,未经定义类型的变 中 量按隐含的I-N规则决定其类型 规则决定其类型, 量按隐含的 规则决定其类型,而C语言则要求 语言则要求 对用到的每一个变量都要在本函数中定义(除非已 对用到的每一个变量都要在本函数中定义 除非已 定义为外部变量)。 定义为外部变量 。 ? (2) 输入输出的数据的类型与所用格式说明符不一 致。 ? 例如,若a已定义为整型,b已定义为实型。 例如, 已定义为整型, 已定义为实型 已定义为实型。 已定义为整型 a=3;b=4.5; . printf(%f %d\n,a,b); , , ? 编译时不给出出错信息,但运行结果将与原意不 编译时不给出出错信息, 符,输出为 ? 0.000000 16402 . ? 它们并不是按照赋值的规则进行转换 如把 .5转 它们并不是按照赋值的规则进行转换(如把 如把4. 转 换成4), 换成 ,而是将数据在存储单元中的形式按格式 符的要求组织输出(如 占 个字节 个字节, 符的要求组织输出 如b占4个字节,只把最后两个 字节中的数据按%d,作为整数输出 。 字节中的数据按 ,作为整数输出)。 ? (3) 未注意 型数据的数值范围。 未注意int型数据的数值范围 型数据的数值范围。 ? 一般微型计算机上使用的 编译系统,对一个整 一般微型计算机上使用的C编译系统 编译系统, 型数据分配两个字节。 型数据分配两个字节。因此一个整数的范围为 -215~215-1,即-32768~32767。常见这样的程序 , ~ 。 段: int num; num=89101; printf(%d,num); , ? 得到的却是 得到的却是23565,原因是 已超过32767。两 ,原因是89101已超过 已超过 。 个字节容纳不下89101,则将高位截去。见图 个字节容纳不下 ,则将高位截去。见图16.1。 。 即将超过低16位的数截去 即将89101减去 位的数截去。 减去216(即 即将超过低 位的数截去。即将 减去 即 16位二进制所形成的模 。89101-6

文档评论(0)

cbf96793 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档