C语言程序设计 教学课件 作者 刘明才 第3章 运算符和表达式.ppt

C语言程序设计 教学课件 作者 刘明才 第3章 运算符和表达式.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 运算符和表达式 算术运算符和算术表达式 自增、自减运算 位运算 赋值运算 关系表达式与逻辑表达式 条件表达式与逗号表达式 3.1 算术运算符和算术表达式 单目运算符 有一个运算对象的运算符是单目运算符(unary operator),C语言的单目算术运算符有两个:+、-。 “+”作为单目运算符(取正值运算符),其作用是取其右边的数或变量的正值。例如:+8或+x。 “-”作为单目运算符(取负值运算符),其作用是取其右边的数或变量的负值(相反数)。例如:-18或-y。 双目运算符 +、-、*、/与数学运算相似,先乘除后加减,即按运算符优先级进行计算。结合性均为从左到右。这里需要说明的是/(除法)运算符的运算对象若都是整型数据时,结果也是整数,舍去小数部分。 例如:1.0/2为0.5,1/2为0,5/2为2,-7/4为-1。 根据运算符“/”的整除特性,可以对整型量作一些特殊的有效处理。例如,若整型变量n是一个两位数,求n的十位上的数字(digit),可以写作“n/10”,因整数除法的特性,结果只取整数部分,如n=21,则“n/10”为2,即求得了n的十位上的数字。 取余运算符“%”是求整数除法的余数,余数符号与左边的运算对象符号相同。需要说明的是取余运算符“%”不能用于实型数据的运算。 例如:3%4为3,6%3为0,-9%5为-4,9%-5为4。 根据运算符“%”的取余特性,可以对整型量作一些特殊的有效处理。例如,若求整型变量n的个位上的数字,可以写作“n%10”,如n=123,则“n%10”为3。 字符类型的数据是以该字符的ASCII码参加运算。 例如:a+3为100(字符a的ASCII码为97)。 设chl,ch2为字符型,i为整型,则chl-ch2的值为字符chl与ch2的ASCII码的差值。当chl为0~9的字符时,i=ch1-0把数字字符转化为数字;如i=9-0则把字符9转换为数字9。 当chl为a~z的字符时,ch2=ch1-(a-A)把小写字母转换成了大写字母。参考附录B的ASCII字符编码表,可以看到a的ASCII码为97,A的ASCII码为65,所以a-A=32,即任何一个小写字母与它对应的大写字母之间ASCII码的差为32,那么,ch2经过运算后,就是chl对应的大写字母了。同理,要把大写字母转换为小写字母也可用类似的算法,读者可以自己写出。 算术运算中的类型转换 自动转换 C语言中,允许不同类型数据进行混合运算,包括整型、实型、字符型数据都可以进行混合运算。在表达式的计算过程中,两个参加运算的操作数(operand),在计算前自动进行类型转换(type conversion)。不同类型数据运算自动转换规则,如图所示。 不同类型数据运算自动转换规则 强制类型转换 除了由系统自动实现数据类型转换外,还可以在程序中进行强制类型转换,将一个表达式转换成所需类型。其表示形式是:(类型标识符)表达式 假设有int i=3,j=2; 则i/j只能做整除运算,得到整数部分1,如要保留小数部分,需做实数除法,可以写作“(double)i/j”,其运算步骤是先将i值强制转换为double类型,再相除,其结果为1.5。注意“(double)i/j”与“(double)(i/j)”的区别,后者先完成“i/j”整除,再将结果转换成double型,即值为1.0,仍得不到真正的小数部分。 3.2 自增、自减运算 运算符 自增运算符(increment operator):++ 自减运算符(decrement operator):-- 自增、自减运算符只有一个运算对象。 使用格式 前缀格式:运算符 变量 后缀格式:变量 运算符 两种格式的区别:在前缀格式中,先使变量加(减)1,再使用变量的值;在后缀格式中,先使用变量的原值,再使变量加(减)1。例如: ++i, --i是在使用i之前,先使i的值加(减)1; i++, i--是在使用i之后,使i的值加(减)1。 粗略地看,++i和i++的作用相当于i=i+1。但++i和i++不同之处在于++i是先执行i=i+1后,再使用i的值;而i++是先使用i的值后,再执行i=i+1。 若i的原值为3,则下面两个赋值语句的作用是不同的。 (1)j=++i;是i的值先变为4,再赋给j,j的值为4。 (2)j=i++;是先将i的值3赋给j,j的值为3,然后i变为4。 又如:int i=3; printf(%d,++i); 则输出4; 若改为:int i=3; printf(%d,i++); 则输出3。 优先级与结合性 由附录C可以看出,自增、自减运算符的优先级与单目算术运算符(+、-)优先级相同,比双目算术运算符(*、/、%、+、-)的优先级高。 例如:3+a++,处理时先计算优先级高的

文档评论(0)

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

1亿VIP精品文档

相关文档