c语言教材第一章.pptVIP

  • 4
  • 0
  • 约1.56万字
  • 约 91页
  • 2019-07-13 发布于湖北
  • 举报
* 12.运算符与表达式 表达式 表达式的分类 按照运算符在表达式中的作用 算术表达式,例:3+4*5 赋值表达式,例:a=3 关系表达式,例: 56,ab 逻辑表达式,例:35a=b 条件表达式,例:ab?a:b 逗号表达式,例:a=3,b=4,c=5 指针表达式,例:p-2,a * 12.运算符与表达式 表达式的求值过程 C语言规定了运算符的优先级和结合性 优先级 指同一个表达式中不同运算符进行计算时的先后次序 结合性 结合性是指同一个表达式中相同优先级的多个运算应遵循的运算顺序 C语言规定:单目运算符是自右向左结合,双目运算符是自左向右结合 * 表达式的求值过程按C规定的原则求值 表达式代表了一个具体的值 实际上是一个数据加工的过程 在表达式求值时,先按运算符的优先级级别的高低次序执行 如果运算符两侧的优先级级别相同,则按规定的“结合方向”处理 提示 运算符的优先级制约着表达式的计算次序 可以通过括号()来改变表达式求值的顺序 表达式求值过程中存在某种类型数据的类型转换 * 12.运算符与表达式 算术表达式 由算术运算符连接数值型运算对象构成 其结果可以是整数、单精度实数和双精度实数 例:int a=2; float b=4.5;表达式 2*a+b 的结果为8.5 优先给与结合性 * 提示 两个整数相除其结果仍为整数(即舍去小数部分) 例如:13/10的结果为1 “%”为求余运算符,参与运算的两个数均为整数 例如:10%3=1 -10%3=-1 除以0在计算机系统中是没有意义的 双目运算符两侧运算对象的类型必须一致,所得结果的类型将与运算对象的类型一致 用括号可以改变表达式的运算顺序 * 12.运算符与表达式 算术表达式 例1: 设 int b=7;float a=2.5,c=4.7; 表达式a+(int)(b/3*(int)(a+c)/2)%4的值? 例2: * 12.运算符与表达式 自增/自减 “++”与“--”的作用是使变量的值增1或减1 C语言提供两种形式的 ++/--运算符 ++a,--a(前缀运算:先进行增量运算后使用) a++, a--(后缀运算:先使用后进行增量运算) 提示: 增和自减只能作用于变量,不允许对常量、表达式或其它进行操作 当自增/自减变量值本身就单独构成一条语句时,前缀和后缀的效果是一样的 对于“++”和“--”的使用要避免二义性 * 12.运算符与表达式 自增/自减 计算过程 例1:设x=5 y=++x;/*先计算x=x+1,再执行y=x,结果x=5 ,y=6*/ y=x++;/*先执行y=x,再计算x=x+1,结果y=5,x=6*/ 问题:如何理解A+++B ? C规定:自左向右取尽可能多的符号组成运算符 例2:设x=5 y=x++*x++;/*先取x的值进行“*”运算,再进行两次 x++。 y=25,x=7*/ y=++x*++x;/*先进行两次x自增1,使x的值为7,再进行相乘运算。y=49,x=7*/ * 12.运算符与表达式 赋值表达式 由赋值运算符“=”连接表达式(右侧)和变量(左侧) 形式:变量名=表达式 赋值运算符完成两类操作 计算 赋值 例 int a=2,float b=5.2,c; c=a*b; 赋值运算符具有右结合性 例如:a=b=3*5;/*先计算3*5,后将15赋给b,再将b的值15赋给a*/ * 12.运算符与表达式 赋值表达式 组合赋值表达式 组合赋值运算符将一个变量和一个表达式连接起来的式子称为组合赋值表达式 形式:变量名 组合赋值运算符 表达式 例: x%=y/3;/*x=x%(y/3)*/ a*=b+c /* a=a*(b+c)*/ 注意:“a*=b+c”与“a=a*b+c”是不等价的 提示 “=”不是数学中的“等号”,它表示一个动作 右侧的值送与左侧的变量中(左侧只允许是变量,不能是表达式或其他) 赋值运算符两侧的类型要求一致,否则要进行类型转换 赋值运算符‘=’,相等运算符‘= =’,和一般习惯有所不同 * 12.运算符与表达式 关系表达式 关系运算符中的“关系”二字的含义是指一个值与另一个值之间的关系 关系由关系运算符(,,=,=,!=,==)连接表达式构成 形式:表达式 OP 表达式 表达式可以是常量、变量和表达式 结果为整型值 0:逻辑假 1:逻辑真 优先级:(,,=,=)高于(!=,==) 结合方向:自左向

文档评论(0)

1亿VIP精品文档

相关文档