C语言程序设计3-运算与表达式分析报告.ppt

运算与表达式 3.1 算术运算 运算符(Operator):描述运算功能的符号 表达式(Expression):由运算符和操作对象构成的式子。 运算符分类: 根据操作数个数分类: 单目运算符、双目运算符 、三目运算符 根据运算功能分类: 算数运算符 关系运算符 逻辑运算符 位运算符 其它 3.1 算术运算 3.1.1 算术运算符 单目基本算术运算符【例3.1】 + 正 - 负 双目基本算术运算符 【例3.2】 + 加 - 减 * 乘 / 除 % 求余数(要求两个操作数必须是整数) 3.1 算术运算 注意点 1、若两个操作数的类型不同,则先转换为相同类型后再运算。 2、若两个操作数的类型相同: 若均为short int 或 char 类型,则转换为int 若均为float 类型,则转换为double 3、除法运算符/:若两个操作数都是整型,则结果为整型(小数部分直接去掉) 4、求余运算%: 两个操作数必须是整型,否则编译出错。 结果的符号与第一个操作数符号相同。 3.1 算术运算 3.1.2 优先级与结合性 优先级问题 当一个表达式中有多个运算符时,先计算哪个? 例如:10+20/10 结合性问题 当一个表达式中有多个相同优先级的运算符时,是从左向右计算,还是从右向左计算? 例如:10*2/5 优先级 运算符 高 ++ - - ~(按位取反) !(逻辑非) +(正) -(负) 右→左 * / % 左→右 +(加) -(减) 左→右 (按位左移) (按位右移) 左→右 = = 左→右 ==(相等) !=(不相等) 左→右 (按位与) 左→右 ^(按位异或) 左→右 |(按位或) 左→右 (逻辑与) 左→右 ||(逻辑或) 左→右 ?:(条件运算符) 右→左 = += -= *= /= %= = = = |= ^= 右→左 低 ,(逗号) 左→右 请记录 3.1 算术运算 3.1.3 数据类型转换 数据类型转换 隐式类型转换 操作数为char或short int时,自动转换为整型 操作数为float时,自动转换为double型 当操作数类型不同时,将精度低的操作数的类型转换为精度高的另一个操作数类型。 强制类型转换 (类型名)(表达式) (double)x signed char signed short int signed int signed long unsigned char unsigned short int unsigned int unsigned long float double long double 请记录 3.1 算术运算 3.1.4自增、自减运算 自增运算符“++” 表达式形式: 运算符 操作对象 如:++k 操作对象 运算符 如:k++ 自减运算符“--” 表达式形式: 运算符 操作对象 如:--k 操作对象 运算符 如:k-- 注意 自增对象必须是整型变量 尽量避免在一个表达式中出现对同一个变量的多次自增、自减运算 3.2关系运算 关系运算符 = = 双目 等于 左结合 != 双目 不等于 左结合 双目 大于 左结合 = 双目 大于等于 左结合 双目 小于 左结合 = 双目 小于等于 左结合 表达式形式:操作对象1 关系运算符 操作对象2 优先级 、=、=、= 高于 ==、!= 低于算术运算符 结果:0或1 3.3 逻辑运算 逻辑运算符 双目 逻辑与 左结合 || 双目 逻辑或 左结合 ! 单目 逻辑非 右结合 表达式形式: ! 操作对象 操作对象1 操作对象2 操作对象1 || 操作对象2 逻辑运算符的优先级 结果:0或1 思考题 int x=1,y=2; 1、执行表达式(xy) (--x0)后,求x的值 2、执行表达式(xy) || (--x0)后,求x的值 3.4 位运算 3.4.1 按位逻辑运算 双目 按位与 左结合 | 双目 按位或 左结合 ^ 双目 按位异或 左结合 ~ 单目 按位取反(非) 右结合 3.4.2 移位运算 双目 左移位 左结合 双目 右移位 左结合 3.4 位运算 3.4.3 程序例子 输入一个整数,把该数的二进制第5位清0 2个字节:1111 1111 1110 1111 F

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档