c语言运算符和表达式.ppt

上传人:sh****n 文档编号:7456657 上传时间:2020-03-21 格式:PPT 页数:69 大小:646KB
返回 下载 相关 举报
c语言运算符和表达式.ppt_第1页
第1页 / 共69页
c语言运算符和表达式.ppt_第2页
第2页 / 共69页
c语言运算符和表达式.ppt_第3页
第3页 / 共69页
点击查看更多>>
资源描述
1 内容回顾 单个字符的输入和输出函数字符输出函数putchar c 字符输入函数getchar 格式化输入 scanf 输出 printf 函数的用法整型数据的输入输出 d o x u 实型数据的输入输出 f e lf le 字符型数据的输入输出 c 常用函数 包含头文件 函数原型 第三章 运算符和表达式 3 本章内容 3 1算术表达式3 2赋值表达式3 3逻辑表达式3 4其他表达式3 5多种类型混合运算 4 运算符简介 C语言中 数据是程序处理的对象 运算是对数据进行加工的过程 体现数据之间的各种不同运算关系的符号就称为运算符 C语言中 除了控制语句和输入输出以外的几乎所有的基本操作都是用运算符来实现的 例如 赋值操作的功能 在C语言中是用赋值运算符 来实现的 5 C语言的运算符按照其功能分为以下13类 算术运算符 下标运算符 关系运算符 分量运算符 逻辑运算符 强制类型转换运算符 类型 赋值运算符 及其扩展赋值运算符求字节数运算sizeof条件运算符 位运算符 逗号运算符 指针运算符 其他运算符如函数调用运算符 6 学习运算符 主要掌握以下4点 运算符操作的数据的类型 不同的运算符操作的数据的类型不一定相同 而且每种运算符操作的数据的类型是相对固定的 运算符操作的数据的个数 不同的运算符操作的数据的个数不一定相同 根据运算符连接运算对象的个数 一般分为单目运算符 如 双目运算符 如 和三目运算符 如 7 运算符在整个运算符系统中的优先级 优先级是指在运算对象的左右都有运算符时运算的先后次序 运算对象先做优先级高的运算 如 比 优先级高 运算符操作的数据的结合性 运算符的结合性规定了在表达式求解过程中 若运算对象其左右运算符优先级相同时的运算方向 结合性有两种 左结合 从左到右计算 和右结合 从右到左计算 8 表达式 用运算符将运算对象 常量 变量 函数等 连接而成的式子 如a b c 1 5 a 表达式使用时应注意表达式的值及类型 a 不同类型的运算符所表示的表达式类型也是不同的 表达式一般有算术表达式 赋值表达式 关系表达式 逻辑表达式 逗号表达式 条件表达式等表达式 b 表达式虽然有各种类型 但它总是有确定的值的 根据运算符的优先级和结合性进行计算 9 表达式书写的一般规则 表达式必须写在同一行上 只能使用圆括号 且左右括号个数要相同 有多层括号时内层括号中的运算优先 如 写作 1 0 2 a x a x 4 x 例 写出下列代数式的C算术表达式 1 4 x 1 3 x 1 pow 4 x 1 0 3 x y 2 sqrt x x y y 10 3 1算术表达式 一 基本算术运算符 加法运算或正号运算符 减法运算或负号运算符 乘法运算符 除法运算符 求余运算符 或称模运算符 自增运算符 自减运算符 3 1 1算术运算符 11 算术运算符的优先级和结合性 单目 双目 双目 从右向左 从左向右 如 5 3 2相当于 5 3 2 结果为 4 优先级 3 5 3相当于 3 5 3结果为0 结合性 12 注意 1 与数学中的运算顺序相似 先乘除 后加减 从左到右 2 求余运算符 要求两个运算对象均为整型数据 余数符号与左边的运算对象符号相同 如 2 3为2 9 5为 4 9 5为4 3 运算符的右操作数不可以为0 4 字符类型的数据以该字符的ASCII码参加运算 如 a 2相当于97 2 13 5 运算符 操作数的类型不同 功能不同 当两个操作数均为整型时 其结果的类型也为整型 a 若除数和被除数都为正值 结果为正 直接舍去小数部分 如 5 2的结果为2 若两个操作数中有一个为实数 则结果是double型 因为所有实数都按double型进行运算 如 5 0 2的结果2 5 b 若除数或被除数中有一个为负值 则舍入的方向是不固定的 如 5 3 多数机器采取 向零取整 的方法 即5 3 1 5 3 1 取整后向零靠拢 14 整除和求余数的特殊用处 123 10的结果是3 12 10的结果是2 123 10 结果是12 12 10的结果是1 通过整除和求余数交叉应用 可以分解一个整数 这个技巧以后我们要经常使用 小程序 输入一个三位数的整数 请分离出各位 十位 百位 并输出 15 二 自增 自减运算符运算符号 自增运算符 自减运算符 功能 使变量的值增1或减1 用途 常用于循环语句中使循环变量自动加或减 也用于指针变量 使指针指向下或上一个地址 操作数 只能是变量不能是常量 表达式和函数 如 i i i i是正确的 8 sin 4 x y 是错误的 结合性 自增 减 运算符的结合性是右结合 优先级 单目运算符 优先级高于算术运算符 低于括号类运算符 16 作用于变量的形式有两种 前缀方式 prefix 运算符变量 如 i i 后缀方式 postfix 变量运算符 如i i 在使用 之前 先使 的值加 减 在使用 之后 再使 的值加 减 17 自增 自减运算取变量的值作为表达式的值 如 设n 10 n 1 n n 1 11 2 取n值11作为表达式 n的值 n 1 取n值10作为表达式n 的值 2 n n 1 11 例子 inti k i 2 k i i 2 k i i 3 i 3 k 3 k 2 k ii i 1 i i 1k i 18 例3 1 includevoidmain inta 2 b 2 x y x a 2 前缀运算y b 1 后缀运算printf x dy d n x y printf a db d n a b 运行结果 x 3y 1a 1b 3 a a 1 x a 2 y b 1 b b 1 19 连续的 表示前两个是对a的自减 最后的 表示减法运算 例3 2 includevoidmain inta 2 b 2 c c a b 变量a为前缀运算 b为后缀运算printf a d b d c d n a b c a b 2 c a b printf a d b d c d n a b c a b 2 printf a d n a printf b d n b c a b a b增1后的值参加运算printf c d n c a a 1 c a b b b 1 c a b c a b a a 1 c a 1 b 1 b b 1 输出 a 3 b 1 c 5 输出 a 1 b 2 c 4 输出 c 6 输出 a 2 输出 b 3 说明 C语言处理时是从左到右取最多个数的符号作为一个合法的运算符 20 3 1 2算术表达式 用算术运算符和括号将运算对象 也称操作数 连接起来的 符合 语法规则的式子 称为 算术表达式 运算对象包括常量 变量 函数等 例如 5 a 是一个合法的表达式 21 3 2 1赋值运算符1 运算符 2 作用 将一个数据或表达式的值赋给一个变量 如 表示把常量3赋给变量ay a sin z 表示把表达式a sin z 的结果求出来再赋给一个变量y注 赋值运算符与数学中的等号不同 赋值运算符求解后能够得到一个运算结果 3 赋值运算符的优先级和结合性 优先级较低 结合性是从右向左 如 x y 3 3 2赋值表达式 22 3 2 2赋值表达式变量 表达式计算赋值运算符右侧表达式的值将赋值运算符右侧表达式的值赋给左侧的变量将赋值运算符左侧的变量的值作为表达式的值例 n 2 n n 1 23 对赋值表达式的说明 a 赋值运算符左侧只能是变量 不可以是表达式 函数或常变量也不能作为左值 b 赋值表达式中右边的表达式又可以是赋值表达式 例 a b 7赋值表达式中含有多个赋值运算符时 从右向左依次赋值 c 赋值表达式可以以表达式形式出现在某些语句 如输出语句 循环语句等 中 如 printf d a b 24 3 2 3赋值语句变量 表达式 功能 先计算表达式的值 然后将值赋给变量 例 inta b c floatx y x sqrt 7 y x 4 a b c 6 25 3 2 4复合赋值运算符 双目运算符与赋值运算符的合成或简化 称为复合赋值运算符 语言规定可以使用 种复合赋值运算符 复合赋值运算符的优先级和结合性同赋值运算符 26 变量双目运算符 表达式 复合赋值运算符的功能 先将变量与赋值运算符后面的表达式进行一次双目运算符所指定的运算 然后再将运算结果赋给变量 例如 等价于 等价于 等价于 以 为例来说明 它相当于使 进行一次自加 的操作 即先使 加 再赋给 27 注意 如果 右边是包含若干项的表达式 则相当于它有括号 如 x y 3 x y 3 x x y 3 不要错写成x x y 3 复合赋值运算表达式 变量双目运算符 表达式 是个整体 步骤 1 左边变量的当前值与右边整个表达式进行相应运算 2 把1 的结果赋给左边的变量 3 赋值表达式的值是左边变量的值 28 例3 3赋值运算符的使用 includevoidmain inta 5 b 5 c 5 a 2 b a 3 c a 1 printf a d b d c d n a b c 结果 a 3 b 30 c 2 a a 2 b b a 3 c c a 1 29 3 3逻辑表达式 关系运算符是用来比较两个运算对象大小的 运算结果是成立或不成立 如果成立 则结果为逻辑值 真 用整数 1 来表示 如 5 5如果不成立 则结果为逻辑值假 用整数 0 来表示 如 5 5 3 3 1关系运算符及关系表达式 1 关系运算符 30 C语言提供的6种关系运算符 3 3逻辑表达式 31 2 关系运算符的优先级 关系运算符的优先级低于算术运算符 高于赋值运算符 的优先级相同 的优先级相同 关系运算符的结合性 左结合如 intx 7 计算下面关系表达式的值 x 5 11 1 5 高低 32 3 关系表达式 用关系运算符将两个表达式连结而成的式子 如 a b a b b c a 3 b 5 a b b c 等 C语言中并没有bool这个数据类型或说逻辑型数据 故表示关系运算结果时 以1代表真 以0代表假 在实际运行过程中 非零值为真 零为假 33 如 1 若有inta 3 b 2 c 1 d 则d a 3 b 4 结果为0 d a b c 结果为0 d a c c 结果为1 2 若inta 5 b 3 printf d a b 34 例3 4分析下面程序的运行结果 includevoidmain floatx y 0 3 y y 11 x 3 0 3 if x y printf ok x y elseprintf no x y 说明 两个实数一般不作相等或不等比较 因为实数表示或在计算过程中有时存在误差 结果 no x y 35 字符数据可以进行大小比较 比较时 用字符的ASCII码进行比较 如 A B Z a 36 例3 5 includevoidmain inta b c scanf d d d a 1 b 3 c 4 a 1 b 12 c 5 a 0 b 12 c 5 37 3 3 2逻辑运算符及逻辑表达式 1 逻辑运算符逻辑与 表示并且 逻辑或 表示或者 逻辑非 表示相反 例 a 例 a b 例 a b 结合性 单目运算 右结合 双目运算 左结合 38 用逻辑运算符将关系表达式或逻辑量连接而成的式子 如 x 33 5 x y 7逻辑运算对象可以任何类型的数据 整型 实型 字符型 指针型 枚举型 判断逻辑运算对象的真假非0表示真0表示假 2 逻辑表达式 x y可以是任意表达式 39 逻辑表达式的运算结果为一逻辑值 即真或假 1 表示逻辑真 即满足条件 0 表示逻辑假 即不满足条件 逻辑表达式在程序中一般用于控制语句 if for while dowhile 对某些条件作出判断 根据条件的成立 真 与不成立 假 决定程序的流程 40 3 逻辑运算的规则 逻辑与 逻辑或 逻辑非 真值表xyx yx y x假假001假真011真假010真真110 000非0非00非0非0 5 7 0 7 7 41 总结 运算结果为运算对象逻辑值的反当运算对象为非零值时 则运算结果为0 反之当运算对象为零值时 则运算结果为1 当两个运算对象均为非零值时 运算结果为1 否则运算结果值为0 当两个运算对象中有一个为非零值时 运算结果为1 当两个运算对象均为零时 则运算结果才为0 42 内容回顾 算术运算符 赋值运算符 复合赋值运算符 关系运算符 逻辑运算符 使用运算符时应注意 优先级和结合性 43 4 逻辑运算符的优先级 正负 加减 高 低 例3 6写出下列表达式的值 设inta 2 b 3 charc A floatx 3 6 y 4 4 1 a b c A x y2 a b c 5 y 2 x结果 1 02 1 44 例3 7 根据条件写出C的逻辑表达式 1 写出m n都能被k整除的逻辑表达式 即如果m n都能被k整除 表达式值为1 否则为0 m k 0 n k 02 写出x y z是可以构成三角形三条边的逻辑表达式 x y z x z y z y x3 判断字符变量ch中的字符是否为大写字母的逻辑表达式 ch A ch Z 说明 逻辑与 一般用于判断两个或两个以上的条件是否同时成立 45 4 写出 x 大于6 25的逻辑表达式 x6 255 写出x y不同时为零的逻辑表达x 0 y 0说明 逻辑或 一般用于判断两个或两个以上的条件是否至少有一个成立 46 6 判断y是闰年 凡能被4整除不能被100整除的是闰年或能被400整除的是闰年 y 4 0 y 100 0 y 400 07 判断 x y落在圆心 0 0 半径为1的圆外和中心点为 0 0 边长为4的矩形内 的表达式 x x y y 1 x 2 x 2 y 2 47 运算符和表达式总结 注意 优先级 结合性 操作对象个数 48 0 x 10不同于0 x x 10 要判断一个变量的值是否在0到10之间 很自然想到了这样一个表达式 scanf d 编译通过 但是在运行的时候就会出问题 仔细分析一下if语句的运行过程 正确的写法应该是 if 0 a a 10 如果变量a的值大于0并且小于10 这样不但编译通过 运行结果也是对的了 49 执行顺序 首先计算e1的值 1 若为非0 即真值 再计算e2的值 并把e2的值作为整个表达式的值 2 若为0 即假值 则需计算e3的值并把e3的值作为整个表达式的值 3 4其他表达式 3 4 1条件运算符及条件表达式 e1 e2 e3分别为任意表达式 50 例3 9用条件表达式计算 求变量t的符号 f t 0 1 1 求三个变量最大值x y z s s x y x y z s z 将字符变量ch若为小写字母则改为大写字母 其余字符不变 ch ch a ch z ch A a ch 51 条件运算符的优先级和结合性条件运算符是C语言中惟一的三目运算符 条件运算符优先级低于逻辑运算符 高于赋值运算符和逗号运算符 条件运算符具有右结合性 如 inta 1 b 2 c 3 d 4 a b a c d c da b a c d c d 结果为4 52 例3 10输入三个数给变量a b c后 按值从大到小输出 includevoidmain inta b c intm n k scanf d d d 输入 5 87输出 8 53 3 4 逗号运算符及逗号表达式1 逗号运算符 常用在for语句中 2 逗号表达式表达式1 表达式2 表达式n功能 自左至右计算各表达式的值 并以最后一个表达式的值作为逗号表达式的值 如 a 2 4 3 5 a的值为 整个表达式的值为 54 优先级和结合性逗号运算符是所有运算符中级别最低的 运算方向 从左向右例 3 赋值表达式 将一个逗号表达式的值赋给 的值等于 逗号表达式 包括一个赋值表达式和一个算术表达式 的值为 整个逗号表达式的值为18 55 注意 并不是任何地方出现的逗号都是作为逗号运算符 例如函数参数也是用逗号来间隔的 如 printf d d d a b c 并不是一个逗号表达式 它是printf函数的3个参数 printf d d d a b c b c 是一个逗号表达式 它的值等于 的值 56 3 5多种类型混合运算 C语言中 允许不同类型的数据进行混合运算 包括整型 int short long 实型 float double 字符型 char 数据都可以进行混合运算 例如 10 a 1 5 8765 1234 b 是合法的 在进行运算时 不同类型的数据要先转换成同一类型 然后再运算求值 57 表达式中数据类型的转换可分为两种 数据类型的隐式转换 自动转换 数据类型的强制转换类型转换在C中也属于一种运算 58 1 自动转换在进行算术运算过程中 两个参加运算的操作数 在计算前先自动进行类型转换 水平方向 自动垂直方向 低 高 3 5 1算术运算中的类型转换 59 例 A 126577 规则1 凡char short型一律自动转换成int型 float一律转换成double型 转换后若两操作数类型相同 作算术运算 其结果类型与转换后的类型相同 1 5f 4 21 5f转换为double型 计算结果6 3为double型 60 规则2 相同类型的操作数 除char short float型外 作算术运算的结果为同一类型 例 两个整数的除法其结果一定是整数 5 2结果为2 5 2结果为 2 61 规则3 不同类型的操作数或经规则1转换后仍然是不同类型 则低级别的自动转换成高级别的再运算 其结果类型与转换后的类型相同 char short int unsigned long unsignedlong float double 62 例3 112 0f 5 2 3262 06 08 0 规则 规则 规则 规则 63 可以利用强制类型转换运算符将一个表达式转换成所需类型 类型名 表达式强制类型转换运算符优先级同 高于算术运算符 从右向左如 double 3 int 3 8 double 5 2 double 5 2 3 032 02 5 2 强制类型转换 64 例 12 includevoidmain float inti x 3 6 i int x printf x f i d n x i 说明 强制类型转换 对被转换变量本身没有影响 既不改变变量的类型 也不改变变量值的类型 只生成一个中间计算结果 运行结果 x 3 600000 i 3 说明 有两种类型转换 一种是在运算时不必用户指定 系统自动进行的类型转换 第二种是强制类型转换 当自动类型转换不能实现目的时 可以用强制类型转换 65 3 5 2赋值时数据类型的转换 在赋值语句中 左边变量和右边表达式的类型不同时 系统会自动完成类型转换 将赋值运算符右侧表达式的类型自动转换成赋值号左侧变量的类型 再赋值 如 intx 3 则表达式x x 1 999的值是4 66 数据类型的赋值转换规则表 67 常见的几种赋值时的数据类型转换 字符数据赋值给整型变量 char int 例 intz z b 即字符 b 的ASCII码值赋给z变量 整数赋值给实型变量 int float 例 floatz z 39 z的值即为39 000000 68 常见的几种赋值时的数据类型转换 实数赋值给整型变量 float int 例intx x 3 89 取整数 舍弃小数如果值超过变量的取值范围 可能整数部分数据会丢失 69 3 5 3运算符优先级和运算符结合方向 C语言的运算符有 种优先级和两种结合性 运算级别高的先计算 再进行运算级别低的运算 在运算符优先级相同时 运算顺序由结合性决定 表达式中可以通过增加括号来改变运算顺序
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!