第3章c语言数据类型运算符和表达式.pptVIP

  • 12
  • 0
  • 约1.65万字
  • 约 91页
  • 2018-05-26 发布于上海
  • 举报
第3章c语言数据类型运算符和表达式

注意: 如果是包含若干项的表达式,则相当于它有 括号。 如: ① x %= y+3 ② x %= (y+3) |__↑ ③ x = x %(y+3)(不要错写成x=x%y+3) 2、复合赋值运算符(续) 第63页/共91页 3、赋值表达式 用赋值运算符将变量和表达式连接起来的式子 形式: 变量=表达式 求值规则: 将“=”右边表达式的值赋给左边的变量。 结合性:自右至左 第64页/共91页 3、赋值表达式 对赋值表达式求解的过程是: ①求赋值运算符右侧的“表达式”的值; ② 赋给赋值运算符左侧的变量。 例如: 赋值表达式“a=3*5”的值为15,执行表达式后,变量a的值也是15。 注意: 一个表达式应该有一个值 第65页/共91页 3、 赋值表达式 赋值表达式中的“表达式”,又可以是一个赋值表 达式。例如: a=(b=5) 分析:括弧内的“b=5”是一个赋值表达式,它 的值等于5。执行表达式“a=(b=5)”相当于执行 “b=5”和“a=b”两个赋值表达式。 赋值运算符 按照“自右而左”的结合顺序,因此,“(b=5)” 外面的括弧可以不要,即“a=(b=5)”和“a=b=5” 等价。 第66页/共91页 3、 赋值表达式 请分析下面的赋值表达式∶(a=3*5)=4*3 分析:先执行括弧内的运算,将15赋给a,然后执行 4*3的运算,得12,再把12赋给a。最后a的值为12, 整个表达式的值为12。可以看到∶(a=3*5)出现在赋 值运算符的左侧,因此赋值表达式(a=3*5)是左值 注意:在对赋值表达式(a=3*5)求解后,变量a得到值 15执行(a=3*5)=4*3时,实际上是将4*3的积12赋给变 量a,而不是赋给3*5。 不能写成: a=3*5=4*3 第67页/共91页 3、 赋值表达式 赋值表达式也可以包含复合的赋值运算符。 如:a+=a-=a*a 分析:此赋值表达式的求解步骤如下∶ ① 先进行“a-=a*a”的运算, 它相当于a=a-a*a,a的值为12-144=-132。 ②再进行“a+=-132”的运算,相当于a=a+(-132),a的值为-132-132=-264。 第68页/共91页 4、赋值转换 在赋值时,将赋值符右边值的类型转换成与其左边变量类型一致的类型。 几种情况: (1) 实型 整型(字符型) 取整数部分,去掉小数部分 (2) 整型、字符型 实型 补足有效位 float f=23; 23.00000 (7位) double f=A; 65.00 000 000 000 000 (16位) 第69页/共91页 (3) 对char、int、short、long、unsigned型数据 赋值符右边数据(a位) 赋值符左边变量(b位) ★ a=b 原样照赋 ★ ab 截断高a-b位,送低b 位 ★ ab 无符号数据或正数 有符号数据 高a-b位全补0 有符号变量,符号扩展 符号扩展 符号位为0,剩余的高位补0 符号位为1,剩余的高位补1 第70页/共91页 4、赋值转换(续) 例如:将一个int、short、long型数据赋给一个char型变量时,只将其低8位原封不动地送到char型变量(即截断)。 (“长” 数据赋给“短”变量) 例如:int i= 289; char c=′a′; c=i; c的值为33, 如果用“%c”输 出c,将得到字符“!” !的ASCII码为33。 赋值情况 : 第71页/共91页 4、赋值转换(续) 例如:int a;long b=65536;a=b; 赋值情况如下 : (“长”数据赋给“短”变量) 结果:赋值后a值为0。 第72页/共91页 第一种情况:低位对应、高位补零 (“短”数据赋给“长”变量) 若所用系统将字符处理为unsigned char型,则将字符的8位放到int低8位,高8位补零。例如: 将字符‘\376’赋给int型变量i 第二种情况:符号扩展 (“短”数据赋给“长”变量) 若所用系统(如Turbo C++)将字符处理为带符号(signed char)时,若字符最高位为0,则整型变量高8位补0;若字符最高位为1,则高8位全补1。这称为“符号扩展”,这样做的目的是使数值保持不变,如变量c(字符‘\376’)以整数形式输出为-2,i的值也是-2。 第73页/共91页 将带符号的整型数据(int型)赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中: (“短”数据赋给“长”变量) 如果int型

文档评论(0)

1亿VIP精品文档

相关文档