ch0101讲 C 基础知识.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ch0101讲 C 基础知识

1.6.3 语句 1 表达式语句:表达式; 2 空语句: ; 3 复合语句: { //若干语句 } 流程控制语句:流程控制语句用来控制或 改变程序的执行方向 ; 1.6.4 算术类型转换和赋值类型转换 1 混合运算的类型转换规则 2 赋 值 类 型 转 换 运算过程中,当某个二元运算符两边的操作数类型不同但属于类型相容时,系统先将精度低的操作数变换到与另一操作数精度相同,而后再进行运算。 类型相容: 类型不同但系统可以自动进行转换。 当赋值号的左值和右值类型不一致但属于类型相容时,由系统自动进行类型转换。 3 强 制 类 型 转 换 1. 混合运算的类型转换规则 char short int long unsigned char unsigned short unsigned int unsigned long float double long double 数据类型转换方向 具体规则: (1)字符可以作为整数参与数值运算,整数值为其ASCII码。 (2)操作数为字符或短整型时,系统自动变换成整型。 (3)操作数为实型时,系统自动变换成双精度型。 (4)其余情况,当两操作数类型不同时,将精度低(或表示范围小)的操作数的数据类型变换到与另一操作数类型相同再进行运算 例: char c1, c2; int i1, i2; float x1, x2; 则表达式 x2=c1*i1+c1*x1+c1*c2 的求值过程为:将c1转换成整型,完成c1*i1,结果表示为t1;将c1和x1均转换成双精度型,完成c1*x1,结果表示为t2;将c1和c2均转换成整型,完成c1*c2,结果表示为t3;然后t1转换成双精度型,完成t1+t2,结果表示为t4;将t3转换成双精度型,完成t4+t3,最后结果转为单精度型赋给x2。 2.赋值类型转换 系统自动进行类型转换规则: 1、实型数赋给整型变量:取整;注意溢出; 2、整型数赋给实型变量:先转换为实型数; 3、字符型数赋给整型变量:ASCII码为依据;分为两种情况:符号位是0或1时不同; 若符号位为1,则低位字节不变,高位字节全部置1再赋值。 4、绝对值较大的数赋给表达范围较小的数据类型时,注意溢出; 赋值运算中,当左值与右值类型不一致时, 系统将按照左值的类型,自动进行强制转换。 例如: 设有以下定义 double x=2.3,y; int i=2,j; (1) j 2.3 x 2.3 … … 2 2 (1) j=x; (2) y=i; 由系统按 左值j 、y 类型自动 完成强制 转换功能 (2) y 2 i 2 … … 2.0 2.0 3 强制类型转换 强制类型转换运算符格式为: (type) 表达式 //形式一 或 type (表达式) //形式二 作用:将表达式强制转换为type类型, 但表达式的值及其类型不变。 设有变量说明:int a=7, b=5;float x; 表达式 x=a/b的值将为1.0。 如果希望表达式求出这两个整数相除的实数商1.4赋给x,就需要将两个操作数或其中一个操作数进行强制类型转换。可表示为: x=(float)a/(float)b或x=(float)a/b 说明: (1)强制类型转换不改变表达式本身的值类型,而是产生一个临时变量,用来暂存转换后的值,该临时变量引用后即自动释放。如上例,执行强制类型转换后变量a和b的值及类型都不变,而是各自产生一个临时变量,用这两个临时变量的值进行运算。 (2)强制类型转换符优先级较高,只对紧随其后的表达式起作用,而对其他部分不起作用。如表达式(float)a/b的含义是先将变量a强制转换为浮点数,然后与整数b运算。 新的C++标准中,强制类型转换采用static_cast,const_cast, dynamic_cast,reinterpret_cast等4个关键字,形式为static_casttype,语法上更加严谨。 1.6.5 求值次序与副作用 在符合优先级和结合性的前提下,C语言的标准对表达式中各操作数的求值次序没有做统一规定。 编译器为提高代码质量,在不影响优先级和结合性的前提下也要对操作数的访问次序作调整。在安排顺序时,如果某个操作数经历了求值运算,那么这个求值可能影响到其他操作数的值,这时就会产生副作用。 例如,设有int a=2, b=5, c; 对表达式c=a*b+(++a)+(b=10) 三个同级运算中,是先算a*b,还是++a,还是b=10,其次再算哪个?显然求值次序不同将导致结果不同

文档评论(0)

sheppha + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5134022301000003

1亿VIP精品文档

相关文档