中北大学C语言课件第二章.ppt

  1. 1、本文档共105页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* 这里假设使用16位环境! 若要表示整数-6呢?只有有符号数的3种形式:int,short int, long int 若改用32位环境呢? * * 运行程序,并观察结果。 分析:m和n均为整型变量,取值范围为-32768~+32767(这里假设开发环境为16位),当对m的值执行加1操作,则其结果就会超过数值范围(发生溢出),从而得到-32768这个错误结果。 使用板书画图分析。 对于16位的环境,如dos下的turbo C 2.0 int型数据在内存中占16位,是2个字节;对于大多数32位环境,如windows 95 98 NT 2000 XP ,int型数据在内存中占32位,是4个字节; short int占两个字节。 #include stdio.h int main() { int m, n; m = 32767; n = m+1; printf(%d,%d\n, m, n); printf(short int:%d\n,sizeof(short int)); printf(int:%d\n,sizeof(int)); printf(unsigned int:%d\n,sizeof(unsigned int)); printf(long int:%d\n,sizeof(long int)); printf(unsigned long:%d\n,sizeof(unsigned long)); return 0; } * 4;8;16 OK IEEE 754 标准是IEEE浮点数算术标准(IEEE Standard for Floating-Point Arithmetic)的标准编号 ,等同于国际标准ISO/IEC/IEEE 60559 。 对于单精度浮点数(float)来说,符号位一位,指数位8位,尾数23位。指数能够表示的指数范围为-128~127。尾数为23位。 float和double的精度是由尾数的位数来决定的。浮点数在内存中是按科学计数法来存储的,其整数部分始终是一个隐含着的“1”,由于它是不变的,故不能对精度造成影响。float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。 long double:2^112 = 5.1922968585348276285304963292201e+33 有效数字19位,同理,long double的精度为18~19位。 * #includestdio.h int main() { int i=3; float f=2.5; double d=7.5, result; result=10+a+i*f-d/3; printf(结果为:%f\n,result); return 0; } * 运行结果: c=1237 * * 修改为:g =(int)(a + b*c - d/e) % f; * 【回顾】C语言的基本数据类型:整型(基本、短、长);实型或浮点型(单精度、双精度);字符型。 不同数据类型的数据,在内存中占用的存储空间大小不一样,数值范围也不一样。编程时,首先要注意“溢出”问题;其次要掌握不同数据类型之间的转换(即当不同类型的数据在一起运算时,如何进行类型的转换?)。· 【继续讨论】数据类型的相互转换。两种情形: (1)自动隐式转换:如图所示;基本规则有三条;举例:10+a+i*f-d/3; (2)强制转换:当自动转换不能满足要求时,应进行强制转换。举例:g =(int)(a + b*c - d/e) % f; 在使用强制转换时应注意两个问题: ① ②如下例: #includestdio.h int main() { int k; float f=7.67; k=(int)f%2; printf(f=%f 中间结果=%d k=%d\n,f,(int)f,k); return 0; } * 要对数据进行加工处理,就需要进行运算,而各种运算都是通过运算符来实现的。 C语言提供的运算符范围很宽,除了控制语句和输入输出以外,其他几乎所有的基本操作都是作为运算符来处理的。如上列表所示:赋值运算符、逗号,方括号等等。 * 说明几点: (1)乘除法运算分别使用*和/; (2)除法:两个实数相除,结果是双精度实数。两个整数相除,结果是整数。例如7/2的结果是3,舍去小数部分。但要注意:相除的两个数里面有一个是负数时,在不同的系统中,其结果

文档评论(0)

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

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

1亿VIP精品文档

相关文档