C语言程序设计-4--曾剑平.ppt_第1页
C语言程序设计-4--曾剑平.ppt_第2页
C语言程序设计-4--曾剑平.ppt_第3页
C语言程序设计-4--曾剑平.ppt_第4页
C语言程序设计-4--曾剑平.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计 4 表达式 基本语句与顺序结构 曾剑平博士zjp 提纲 表达式基本语句顺序结构 表达式是计算值的算式 由操作数和运算符号组成 如 x 3 14 123 a b x x 1 y cos x 等等 表达式分类 按照表达式中优先级最低的运算符分 算术表达式 x 1 0 y关系表达式 x y z x y 逻辑表达式 x 10 xy x y逗号表达式 x 1 y z 2 1 表达式中如果出现连续两个运算符 如果存在歧义 应用空格分开 x y x y 或x y 5 3 5 3 5 3 这些都是同样的算式 2 括号 改变计算优先级 优先级高的运算加了 不影响表达式结果 3 按照结合性确定计算顺序 大多运算符的结合性是从左到右 只有单目运算 三目运算和赋值运算符是从右到左 如x y z x y zx y x x y xx y z 5 y z 5 x yk i j i j i j i j 计算结果设为x k k x优先级的运用 intx y 3 z 2 x y z 执行后x y z 的优先级高 加 x y z 分解为 x y z y y 1 结果 x 5 y 4 z 2 表达式的类型转换 在表达式中 当参加计算的两个操作数类型不一致时 要求进行类型转换 三种转换方法 1 隐式转换自动进行 按照一定的转换原则 并作为计算结果的类型 short char int unsignedint long unsignedlong float double longdouble不损失精度为原则如 intx y doublea b x y 类型一致 不转换 x a x转换为double 计算结果为double short和char必须转换为int 才能运算 两个char型也需要转换为int再运算 结果是int如 A 1 66 A B 131 2 强制类型转换 可能损失精度格式 类型名 表达式类型名 表达式 int 5 8 把5 8转换为整型数5 int x y 转换x int x y 转换x y注意 intx floaty doublez x y 有的版本需要强制转换 float x y x z 自动转换 warningC4244 conversionfrom double to float possiblelossofdata 3 赋值中的类型转换自动转换成为变量对应的类型inti A i 65intx x 2 5 x 2 double int 截去小数部分 doubley y 1 y 1 0 int double 注意 复合语句doublex x 5 9 得到x 0 0 x 1 0 5 9 得到正确结果x 5 9 1 0 得到x 0 0printf f n 5 9 输出什么 强制类型转换的应用 对浮点数四舍五入 保留小数点后的2位 floaty x 0 1256 y int x 100 0 5 100 0 例子解释2 6 i j k j j k i i j j 5 i 6 k 3i j i j 当i j成立时 执行i 是前缀运算 因此 先得到i作为计算结果 再执行i i 1 而j 不会执行 当i j不成立时 执行j 是前缀运算 因此 先得到j作为计算结果 再执行j j 1 而i 不会执行 i j i j 5 j 6 i 6 inti 1 j 2 k 3 k i j i j 这是复合运算 等价于K k i j i j 注意加括号 因此 先计算条件运算i j i j k 9 j 7 i 6 i 6 j 6 k 3 K j i 相同优先级的关系运算 因此从左到右执行 K j结果是true false 分别转换为1 0 再进行后面比较 K j i 0K j j i 先进行关系运算 再进行逻辑运算 K j j i 1 i 3 j k 4 K i 1 k i 1 i i 1 k i j 复合运算 等价于k k i j 因此 分解为 j j 1 k k i j i i 1 是 i 还是 i 由于 取负 优先级相同 就取决于结合顺序 单目运算 从右到左 因此是 i 例子解释2 7 a b c 1 a b c这是一个 逻辑或 表达式 相当于 a b c 因此 如果 左边为1 则右边就不需要计算 因为能够确定这时整个式子为1 1 先计算 a a 2 不为0 即为true 因此不计算 右边的运算式 b c 因此 a b c true 1 并且 a 2 b 1 c 1 例子解释2 7 a b c 1 a b c这是一个 逻辑或 表达式 相当于 a b c因此 如果 左边为1 则右边就不需要计算 因为能够确定这时整个式子为1 而 a b是一个 逻辑与 表达式 如果左边为0 则右边就不计算 1 先计算 a a 2 不为0 即为true 这时无法确定 a b 的值 因此 需要计算 b 2 计算 b b 2 不为0 即为true 这时可以确定 a b 的值为true 因此 就不需要计算 c因此 a b c true 1 并且 a 2 b 2 c 1 例子解释2 7 a b c 1 a b c这是一个 逻辑与 表达式 优先级相同 从左到右计算 1 先计算 a a 0 即为false 因此不计算 右边的运算式 b 得 a b false 右边的运算式也不需要计算因此 a b c false 0 并且 a 0 b 1 c 1 优先级 优先级顺序 的优先级低于关系运算符的优先级 的优先级高于关系运算符的优先级如 a b x y等价于 a b x y x 0 xy等价于 x 0 xy a b x y zy z y 书上例子中 其他语句的解释 a b c 1 a b c a b c a b c 提纲 表达式基本语句顺序结构 基本语句的类型 表达式语句空语句goto语句break语句continue语句return语句基本语句以分号结尾 表达式语句 在表达式后面加分号 就成了表达式语句 如k k 但并不是各种类型的表达式后面都可以直接加分号 典型的是赋值表达式语句 简称 赋值语句 k k 2 m n 2 函数调用 如 putchar 65 printf d i x cos x sin x 2 空语句 只有一个分号组成的语句 什么也不做intx y x 0 y 1 x y 1 break continue eg intx 10 for i 1 i 50 break x x i return 不需要返回结果return表达式 返回表达式的计算结果只能出现在函数中 如main函数或自定义函数中 表示函数执行完毕 返回到调用的地方 比较两个数大小的函数调用例子 1 voidmain return 2 intmain return0 整数 goto语句要求有语句标号 intx y x 10 st y y x gotost 提纲 表达式基本语句顺序结构 是一种程序控制结构 各个语句按顺序执行 用 括住一个顺序执行的计算步骤序列 表明是顺序结构 也称为复合语句 要成对出现 有多少个 就要有多少个 复合语句中可以嵌套复合语句 构成复杂的程序体 将两个变量的值交换 includevoidmain intx y z x 2 y 3 printf x d y d n x y z x x y y z printf x d y d n x y return 是一种程序控制结构 各个语句按顺序执行 例子 一个计算机应用系统中要求进行用户身份认证 当输入用户名 密码 假设都为数值型 后 系统进行身份验证 如果都符合 则通过 如果不符合 允许用户有三次输入重输的机会 如果三次都不能通过验证 则不允许进入 include stdio h define

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论