- 1、本文档共60页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第3章 数据类型_运算符与表达式
3、字符数据的使用 例1 main( ) {char ch; ch=’A’; printf(“%c=%d\n”, ch, ch);} 运行结果为 A=65 即字符可以用整数格式输出。 例2 main( ) {char ch; int i; ch=’A’; ch=ch+32; i=ch; printf(“%d is %c\n”, i, i); printf(“%c is %d\n”, ch, ch);} 运行结果为 97 is a a is 97 这说明对应ASCII码值的整数可按字符格式输出;字符数据也可按整数输出。 结论:在ASCII码的范围(0—127)内,字符和整数相互通用。虽然它们的存储格式不同(1字节和2字节),但系统可自动转换。 例3.6(P50),例3.7(P51) 例3 main( ) {char c; c=0362; /*八进制数,相当于十进制数242*/ printf(“%c%d\n”, c, c);} 运行结果为 ≥-14,解释如下: c是有符号字符型变量,赋给八进制数0362即十进制数242后当作补码存储。由于242=28-14,即是-14的补码。输出时%c为字符输出,故转换成无符号型字符,即扩展ASCII码242的字符≥输出;而%d为整数输出,直接将补码转换成对应的整数补码,其值-14不变,即输出-14。 字符类型数据的溢出情况与整数溢出情况类似,只是模为256(请思考)。 3.5.4字符串常量 1、形式:一对双撇号括起的一个或多个ASCII码字符,如:hello、%3d\n、z等。 2、存储:双撇号中的ASCII码字符和\0(系统自动添加的ASCII码为0的字符,作为字符串的结束符),如: “hello”共5个字符占6个字节,存储的是 6个字符的 ASCII码: 例:“\\23.5\256\x5f\n”共8个字符占9个字节 其中\\、\256、\x5f、\n分别代表一个字符 注意:字符’A’与字符串”A”的区别,字符串”A”存储两个字符:’A’和‘\0’;“”为空字符串,但存有‘\0’。 说明:C语言中没有字符串变量,相应功能由字符数组等完成。 \0 o l l e h 0 111 118 118 101 104 3. 7不同类型数据间的混合运算及类型转换 在C语言中,基本数据类型均为数值类型。其中除了实型 外,其余类型均用整数存储(包括整型、字符型、逻辑值、枚举 值等)。C语言规定基本数据类型都可以相互转换,因此可以混 合运算,这使得C语言具有很大的灵活性。 一、不同类型的差异:存储数据范围越大、精度越高、类型越高级(P54图3.10) 低级 高级 1、实数中短与长:float— double 2、整数与实数:char,short,int,long — float,double 3、整数中短与长:char — short — int — long 4、同长整数中有符号与无符号:signed — unsigned 二、出现类型转换的情况 1、混合运算时:系统自动按运算顺序将低级的数据直接转换成高级的数据;当出现整数与实数混合运算时,直接将整数转换成double型。 例1:计算 10+’a’+1.5-8765.1234*’b’ 例2:int i;float f;double d;long e; 计算 10+’a’+i*f-d/e 注意:% (求模—余数运算符)的两边只允许出现整数! 2、赋值运算时:系统自动将表达式的值转换成变量的类型存到变量的存储单元。 例如:float a; a=5+’A’; 3、函数调用时:系统自动将实参的值转换成形参变量的类型 4、输入、输出时:数据转换成格式控制符的类型 以上四种类型转换均为系统自动转换,又叫隐式转换。 5、强制类型转换 形式:(类型)(表达式) 作用:将表达式的值强制转换成相应类型 例如:计算 (int)12.56%5 12%5 结果为2 三、数据类型之间的转换产生的一些效果: 1、提升与降格 a、提升: ①短数据 长数据 ②整数 浮点数(实数) ③整数中signed unsigned b、降格:与提升相反 2、符号位扩展与零扩展——保持数值不变 a、符号位扩展(signed型短数据变成signed型长数据):增长的位全部扩展为原符号位(正数扩展0,负数扩展1
文档评论(0)