- 1、本文档共4页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一、自动类型转换?
● 字符型变量的值实质上是一个8位的整数值,因此取值范围一般是-128~127,char型变量也可以加修饰符unsigned,则unsigned char 型变量的取值范围是0~255(有些机器把char型当做unsighed char型对待, 取值范围总是0~255)。● 如果一个运算符两边的运算数类型不同,先要将其转换为相同的类型,即较低类型转换为较高类型,然后再参加运算,转换规则如下图所示。
double ←── float 高
↑long↑unsigned↑int ←── char,short 低???
● 图中横向箭头表示必须的转换,如两个float型数参加运算,虽然它们类型相同,但仍要先转成double型再进行运算,结果亦为double型。 纵向箭头表示当运算符两边的运算数为不同类型时的转换,如一个long 型数据与一个int型数据一起运算,需要先将int型数据转换为long型, 然后两者再进行运算,结果为long型。所有这些转换都是由系统自动进行的, 使用时你只需从中了解结果的类型即可。这些转换可以说是自动的,但然,C语言也提供了以显式的形式强制转换类型的机制。● 当较低类型的数据转换为较高类型时,一般只是形式上有所改变, 而不影响数据的实质内容, 而较高类型的数据转换为较低类型时则可能有些数据丢失。
二、赋值中的类型转换
当赋值运算符两边的运算对象类型不同时,将要发生类型转换, 转换的规则是:把赋值运算符右侧表达式的类型转换为左侧变量的类型。具体的转换如下:(1) 浮点型与整型?● 将浮点数(单双精度)转换为整数时,将舍弃浮点数的小数部分, 只保留整数部分。将整型值赋给浮点型变量,数值不变,只将形式改为浮点形式, 即小数点后带若干个0。注意:赋值时的类型转换实际上是强制的。(2) 单、双精度浮点型?● 由于C语言中的浮点值总是用双精度表示的,所以float 型数据只是在尾部加0延长为doub1e型数据参加运算,然后直接赋值。doub1e型数据转换为float型时,通过截尾数来实现,截断前要进行四舍五入操作。?(3) char型与int型?● int型数值赋给char型变量时,只保留其最低8位,高位部分舍弃。?● chr型数值赋给int型变量时, 一些编译程序不管其值大小都作正数处理,而另一些编译程序在转换时,若char型数据值大于127,就作为负数处理。对于使用者来讲,如果原来char型 数据取正值,转换后仍为正值;如果原来char型值可正可负,则转换后也仍然保持原值, 只是数据的内部表示形式有所不同。?(4) int型与1ong型?● long型数据赋给int型变量时,将低16位值送给int型变量,而将高16 位截断舍弃。(这里假定int型占两个字节)。?将int型数据送给long型变量时,其外部值保持不变,而内部形式有所改变。?(5) 无符号整数?● 将一个unsigned型数据赋给一个占据同样长度存储单元的整型变量时(如:unsigned→int、unsigned long→long,unsigned short→short) ,原值照赋,内部的存储方式不变,但外部值却可能改变。● 将一个非unsigned整型数据赋给长度相同的unsigned型变量时, 内部存储形式不变,但外部表示时总是无符号的。?/*例:赋值运算符举例 */main(){ unsigned a,b;? int i,j;? a=65535;? i=-1;? j=a;? b=i;? printf((unsigned)%u→(int)%d\n,a,j);? printf((int)%d→(unsigned)%u\n,i,b);}运行结果为:(unsigned)65535→(int)-1(int)-1→(unsigned)65535● 计算机中数据用补码表示,int型量最高位是符号位,为1时表示负值,为0时表示正值。如果一个无符号数的值小于32768则最高位为0,赋给 int型变量后、得到正值。如果无符号数大于等于32768,则最高位为1, 赋给整型变量后就得到一个负整数值。反之,当一个负整数赋给unsigned 型变量时,得到的无符号值是一个大于32768的值。?● C语言这种赋值时的类型转换形式可能会使人感到不精密和不严格,因为不管表达式的值怎样,系统都自动将其转为赋值运算符左部变量的类型。?● 而转变后数据可能有所不同,在不加注意时就可能带来错误。 这确实是个缺点,也遭到许多人们批评。但不应忘记的是:c面言最初是为了替代汇编语言而设计的,所以类型变换比较随意。当然, 用强制类型转换是一个好习惯,这样,至少从程序上可以看出想干什么。
?
====
您可能关注的文档
- 365白菜酒店预订平台策划书.doc
- 368所原部委直属高校.doc
- 36个经典培训小游戏.doc
- 36年级下册实验666.doc
- 36篇莆田美景诗联作品.docx
- 37个家庭小妙方2009.doc
- 38.工程项目监理责任保险条款.doc
- 388VIP贵宾蟹卡公蟹3.doc
- 38年后蓝黑军梦回大国际意甲尊严唯它能维护.doc
- 38种喝酒游戏大全2.doc
- 艺术疗法行业商业机会挖掘与战略布局策略研究报告.docx
- 智能家庭娱乐系统行业商业机会挖掘与战略布局策略研究报告.docx
- 医疗纠纷预防和处理条例与医疗事故处理条例的思考分享PPT课件.pptx
- 新冀教版(2025)七年级数学下册《6.1 二元一次方程组》习题课件.pptx
- 新冀教版(2025)七年级数学下册精品课件:6.2.3 二元一次方程组的解法代入、加减消元法的综合应用.pptx
- 导演节目行业市场发展趋势及投资咨询报告.docx
- 制作和服培训行业风险投资态势及投融资策略指引报告.docx
- 医疗转诊的行政服务行业消费市场分析.docx
- 文件装订行业市场发展趋势及投资咨询报告.docx
- 在线语言艺术教育行业分析及未来五至十年行业发展报告.docx
最近下载
- (完整)高考英语3500词汇表中英文 .pdf
- 2024年芜湖职业技术学院单招职业适应性测试题库新版.docx
- 动物医学兽医 麻醉学(Anesthesia).ppt
- 泡沫灭火系统技术标准.pdf VIP
- 新人教版五年级上册期末复习数学专项练习及答案解析 .pdf
- 第46届世界技能大赛世界技能大赛项目选拔赛技术文件 (1).pdf
- 2024年芜湖职业技术学院单招职业适应性测试试题库 带答案(实用).docx
- 《工程勘察设计收费管理规定》计价格2002-10号文(同名17682).pdf VIP
- 京东方设备维护工程师岗面试题库参考答案和答题要点.docx VIP
- 2023年中科院遗传所遗传学考博试题含有整理答案详细.pdf
文档评论(0)