- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据类型和存储模式在C程序设计中重要作用
数据类型和存储模式在C程序设计中重要作用
【摘要】在C程序设计中,必须坚决执行变量、函数先定义,后使用的原则。在定义时务必做到,首先根据估算的可能发生的最大或最小值、充分考虑将要发生的各种运算,正确选择变量函数的数据类型,以避免数据溢出及运算异常。其次根据变量的作用域和生命历程,选择合理的存储模式,以优化程序,提高程序运行效率。
【关键词】合理定义;数据类型;存储模式;正确编程
1.一个简单程序带来的深层思考
有位学生在学习Turbo C语言程序设计时,根据圆周率的级数展开式:
这一程序,编译、连接时连警告信息也没有顺利通过,然而在运行时区发生了意想不到的错误结果。计算后输出的结果并非事先人们已经知道的3.141593,而是显示:
pi=2.000000
这说明,程序中存在软错误,即逻辑错误、数据类型错误、运算错误等。这位学生反复检查,却并未发现有数学运算方面的问题,找不到错误出现的原因。无奈之下,只好求助于老师。
老师看后告诉他:主函数完全正确,但两个子函数fact()、multi()及各函数体内的局部变量p的数据类型不对。不能把它们定义为int型,而应定义为double型。
学生根据老师的提示进行了修改,果然得到了正确的结论。但尚不明白为什么这么小小的修改,就会产生完全不同的结果。老师启发他,认真看书,务必搞清楚定义变量、函数时,正确选择数据类型的重要意义。
2.正确定义变量的数据类型是避免错误的有效方法之一
在C语言程序设计中,始终必须坚持一个非常行重要的原则,即变量必须“先定义而后使用”。变量的定义格式是:
数据类型 变量名1[=值1][,变量名2[=值2]……];
C语言的数据类型分为基本型、构造型、指针型、空型。他们决定了变量在内存中的存储形式、值域及所允许的运算。
2.1 数值类数据的机内存储形式
在C语言中基本数据类型分为:数值型、字符型、枚举型三大类。其中数值型数据又分为:整型、实型两个子类。
(1)整型数据以补码形式存储
整型数据又可细分为:短整型short、整型int、长整型long三类。Turbo C中,它们分别按1、2、4个字节(8、16、32个二进制位)以补码形式在计算机中存放。
(2)实型数据以浮点型是存储
实型数据又可细分为:单精度型float、双精度型double两类。Turbo C中,它们分别按4、8个字节(32、64个二进制位)以浮点形式在计算机中存放。
Float型数据存放时,1位数符位(0为正1为负)、1位阶符位(0为正1为负)、7位阶码位、23位尾数位。
double型数据存放时,1位数符位(0为正1为负)、1位阶符位(0为正1为负)、11位阶码位、52位尾数位。
以下面是+987.654浮点数在计算机内存储的示意格式。
2.2 数值类数据的值域
值域指数据所允许取值的范围。在C语言中整型数与实型数,因其存储形式不同,所以值域大有差别。
(1)整型数据的值域
用整型数据表示的数值绝对精确,但表示的范围却很有限。如超限会产生数据溢出,而可怕的是这种溢出C语言并不给出错误信息,全凭程序设计者的经验与细心才能避免。设一个整型变量m占n个二进制位,则它的取值范围为:
例如int整型变量,按2字节补码方式二进制存储,因此它的取值范围为:-215到+215-1之间,即:-32768到+32767之间。
(2)实型数据的值域
用实型数据表示的数,尽管是近似值,但取值范围却很大。float、double型数据的有效数据分别是7位、15位,取值范围分别是±1038、±10308之间。
2.3 数值类数据所允许的操作
对于数值型数据,系统定义了它们允许的运算为数值运算,例如加减乘除、乘方开方、指数对数、三角函数等。但正因为它们有整型实型之分,因此各自运算的规则又尽不同。例如浮点数不能做取余运算,而做除法运算时,两个整型数相除时除法运算符(/)按整型算子的运算规则进行,否则按实型算子的规则进行除运算。例如:3./2结果为1.5,3/2结果为1,其原因前者进行的是浮点除,后者进行的是整型除。
3.程序错误的最主要原因是变量函数的数据类型选择不当
正因为上述程序中,将函数fact()、multi()、它们各自函数体内的局部变量p都定义成了int型,因此程序运行时,将会发生下面两个错误。
3.1 数据溢出
在int型变量的情况下,做阶乘、做数值连乘,都极易发生数据溢出。例如,在Turbo C中,如将变量定义为int型,那么做阶乘时会发现,7!正确,输出为:5040。但做8!时,不是人们预期的40320,
您可能关注的文档
最近下载
- 方剂配伍理论智慧树知到课后章节答案2023年下浙江中医药大学.docx VIP
- 数控编程与仿真实训(第5版)——电子全套PPT教学课件.ppt
- 沪教牛津版英语4A-M3U1-In-our-school:animal-school公开课课件.pptx VIP
- 急性荨麻疹-洞察与解读.pptx
- 融资分红合同协议.docx VIP
- 草莓状血管瘤血管瘤-洞察与解读.pptx
- 皮肤念珠菌病念珠菌病-洞察与解读.pptx
- 荨麻疹型药疹药疹-洞察与解读.pptx
- DB5305T 78-2022保山市牛油果园水肥一体化技术规程.docx VIP
- DB53_T 1089-2022鳄梨品种'哈斯'生产技术规程.docx VIP
文档评论(0)