第2章数据类型、运算符和表达式1要点.ppt

第2章数据类型、运算符和表达式1要点.ppt

  1. 1、本文档共84页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
例:设有变量声明float a=3.0; int b=2; 计算表达式: 2+sqrt(1.0+a)*b++/2 解: 2+sqrt(1.0+a)*b++/2 ?2+sqrt(4.0)*b++/2 ?2+2.0*2/2?2+4.0/2 ?2+2.0?4.0 即表达式的值为4.0,同时b的值变为3,a的值不变。 4. 算术表达式的计算 §2.3.3 逗号运算符与逗号表达式 1.逗号运算符 用逗号运算符可以将两个表达式连接起来。如: 2+3,2+5 2.逗号表达式 用逗号运算符连接两个或两个以上表达式所形成的新表达式就是逗号表达式,其一般形式为: (表达式1),(表达式2) ,…, (表达式n) 求值过程:先求表达式1的值,再求表达式2的值,…,最后求表达式n的值。表达式n的值就是整个逗号表达式的值。 一个逗号表达式可以与另一个表达式构成一个新的逗号表达式。例如: (a=2+3,a*5),a+10 优先级: 逗号运算符是所有运算符中级别最低的. 结合性:逗号表达式的结合性为自左向右的。 §2.3.3 逗号运算符与逗号表达式 /* EX2-9.C */ main() { int y=3,x=3,z=1; printf(%d %d\n,(++x,y++),z+2); } 【例2-9】 分析下面程序的运行结果 §2.4 数据类型转换 2.4.1类型转换概述 三种方式: 类型自动转换、赋值类型转换和强制类型转换 1.不同数据类型的差异 (1)floatdouble (2)(char,short,int,long)(float,double) (3)charshortintlong (4)signedunsigned 2.数据类型转换产生的6种效果 (1)数据类型提升与降格 (2)为保持数值不变,整型短数据转换成整型长数据时将产生符号位扩展与零扩展。 (3)最高位失去符号位功能(signed型转换成unsigned型)与变成符号位(unsigned型转换成signed型):长度不变,数值可能改变 (4)丢失精度 (5)截去高位(溢出)产生数值的变化:发生在长的整型数据转换成较短类型的整型数据时。 (6)给实数赋值,float型只能接受7位有效数字,double型只能接受16位有效数字,多给无效。 §2.4 数据类型转换 系统自动按运算顺序将低级的数据直接转换成高级的数据,以保证运算的精度,具体规则为: (1) float 在运算时自动转换成double; (2) char和short在运算时自动转换成整型数据int; (3) int和unsigned int混合运算时,将整型数据转换成无符号整型数据,即是用补码参加运算,不会影响结果的正确性; (4) int或unsigned int与long混合运算时,都转换成long型。 (5) int、unsigned、long与浮点型数据混合运算时,都转换成浮点型数据(double)。 §2.4.2 自动类型转换 高 double float long char,short unsigned 低 自动类型转换规则 int §2.4.2 自动类型转换 §2.4.3 赋值类型转换 赋值运算时,如果赋值运算符两侧的类型(指基本类型)不一致,系统自动将表达式的值转换成变量的类型存到变量的存储单元,转换的结果可能会: (1)当整型数据赋给浮点型变量时,数值上不发生任何变化,但有效位增加。如: float f; f=4; /* 内存中变量f的值为4.000000 */ §2.4.3 赋值类型转换 (2)当单、双精度浮点型数据赋给整型变量时,浮点数的小数部分将被舍弃。如: int x =4.35; /*内存中变量x的值为4,精度丢失。如果赋的值绝对值很大则将溢出。*/ (3)将字符型数据赋给整型变量时,由于字符型数据在运算时根据其ASCII码值自动转化为整型数据,所以将字符型数据的ASCII码值存储到变量中。如: int x; x=a; /* 内存中变量x的值为97 */ (4)将有符号的整型数据赋给长整型变量,系统要进行符号位扩展。将无符号的整型数据赋给长整型变量时,只需0扩展即可。 (5)将长整型数据赋给整型变量或将整型数据赋给字符型变量,都有可能溢出。例如: char ch=321;溢出后ch的值为A。 §2.4.3 赋值类型转换 (6)同长度有符号整型数据赋给无符号整型变量时,数据将失去符号位功能。例如: unsigned int u=-1;则u的值为65535。 (7)同长度无符号整型数

文档评论(0)

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

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

1亿VIP精品文档

相关文档