




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章语句和表达式 徐遵unyixu zunyixu 课件制作 2 主要内容 语句和表达式赋值语句与赋值表达式算术运算关系运算逻辑运算条件运算逗号表达式sizeof运算位运算小结与作业 课件制作 3 4 1语句与表达式 C 中的语句语句是程序组成的基本单位 必须是以 结束执行语句是为了完成某个操作或修改某个数据C 语言的语句类型变量声明语句 如 intx y 执行语句 流程控制 if else do while for switch continue break 表达式语句 x 0 x x 1 函数和流对象调用语句空语句 只有一个分号的语句 其形式为 什么也不做 只表示语句的存在自顶向下程序设计时用在那些未完成的模块中复合语句 t x x y y t 课件制作 4 4 1语句与表达式 intmain DataInitialze DataProcess DataOutput voidDataInitialze if x 9 elsecout x endl 课件制作 5 4 1语句与表达式 表达式由操作符 操作数和标点符号组成的序列 用来说明一个计算过程 如z x y操作数也称为运算量或数据 可以是常量 变量或函数 只有数据的式子是最简单的表达式 操作符描述的是对数据进行的操作 C 语言的操作符有40多种 根据操作符需要的操作数个数不同 将操作符分为3类 单目运算符 双目运算符和三目运算符 表达式可以嵌套 如2 3 5 sizeof int 345表达式根据某些约定 求值次序 结合性和优先级规则来进行计算约定 类型转换的约定 由低 高求值次序 与编译器有关 课件制作 6 4 2赋值语句 操作符 作用是将一个数据赋给一个变量 如inta 3 将一个表达式的值赋给一个变量 如inta 3 intb a 3 赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子语法形式 赋值表达式求解过程 将赋值运算符右侧 表达式 的值赋给左侧的变量 表达式的值就是被赋值的变量的值 上述一般形式中的 表达式 还可以是一个赋值表达式 a b 5 C语言允许连续赋值 课件制作 7 4 2赋值语句 变量赋初值程序中常需要对一些变量预先设置初值 C 语言允许在定义变量的同时使变量初始化 inta 3 指定a为整型变量 初值为3 floatf 3 56 指定f为实型变量 初值为3 56 charc a 指定c为字符变量 初值为 a 也可以使被定义的变量的一部分赋初值 inta b c 5 指定a b c为整型变量 只对c初始化 如果对几个变量赋予初值3 应写为 inta 3 b 3 c 3 不能写成 inta b c 3 注意 inta 3 相当于 inta 指定a为整型变量 a 3 赋值语句 将3赋给a inta b c 5 相当于 inta b c 指定a b c为整型变量 c 5 赋值语句 将5赋给c 课件制作 8 4 3算术运算与赋值 中学阶段已学过的算术运算基本运算 取余其它运算 取整 求整 四舍伍入 C 中的基本算术运算 乘 除 求余 双目或双元运算符 的运算量可以是整型 实型甚至为字符型如 4 8 8 5 5 5 4 A 1 对于整型数为除法取整操作 如5 2结果为2 对于浮点数则为通常意义上的除法 如6 2 2为3 1 要求两个运算量必须是整型数 否则会引起编译错误如 5 2 5 6 2 课件制作 9 4 3算术运算与赋值 C 中的基本算术运算双目运算符在运算时运算结果的类型取决于参与运算的两个运算量的数据类型类型一致时 结果为参与运算的两个运算量的数据类型 当两个运算量的类型不一致时 系统会自动进行类型转换 转换成相同的类型之后再进行运算 称为隐式类型转换 隐式类型转换规则 转换总是朝表达能力更强的方向并且转换总是逐个运算符进行 floatf 3 5 intn 6 longk 21 doubless f n k 2 课件制作 10 4 3算术运算与赋值 C 中的基本算术运算强制类型转换 又称显示转换在一个数值或变量前加上带括号的类型名 或类型名后跟带括号的数值或表达式如 cout long 234 456 6 endl cout long 234 456 6 endl 若类型名带类型修饰符 则只能给类型名加括号cout unsignedlong 234 456 6 endl 溢出一个变量被赋予一个超出其数据类型表示范围的数值时发生溢出shortweight 32764 4 VC结果 32768数值溢出不会引起编译错误 有可能引起警告 但运行结果发生偏差 inta 7 floatx 2 5 y 4 7 z 求表达式z x a 3 int x y 2 4的值 课件制作 11 4 3算术运算与赋值 C 中的基本算术运算复合的赋值运算符 将算术运算符与赋值运算符结合起来 注意 两个符号之间不可以有空格 优先级与 同级 右结合性 例 c b a 2 课件制作 12 4 3算术运算与赋值 C 中的基本算术运算自加 自减运算符 自加运算符 的推出自减运算符 的推出自加 自减运算符均为单目运算 并且要求运算量只能是变量在表达式中 一般不考虑 的优先级 而是去找它的运算量 从而确定它是以前缀形式还是以后缀形式出现 例 inti 0 i i 1 i i 1 课件制作 13 4 3算术运算与赋值 C 中的基本算术运算自加 自减运算符 如果以后缀形式出现 则先参与其它运算再使变量的值增1 或减1 如果以前缀形式出现 则先使变量的值增1 或减1 后再参与其它运算 例 inti 5 x y x i y i cout i i x x y y endl 例 inti 5 x y x i y i cout i i x x y y endl 课件制作 14 4 3算术运算与赋值 C 中的基本算术运算自加 自减运算符 当表达式中只有一个 或 运算时 前缀和后缀形式一样 如i i 副作用问题 x i y x i y x i y 课件制作 15 4 3算术运算与赋值 C 中的基本算术运算负号运算符 单元 单目 一元 例1 inta 5 b 8 a a b 1 例2 intx y 3 x y 2 课件制作 16 4 4关系运算 关系运算符 等于 不等于 课件制作 17 4 4关系运算 关系运算符运算出的结果为0和非0 0表示假 即该关系不成立 非0表示真 即该关系成立 绝大多数编译器 关系运算得到的非0结果为1 但是不要利用这个1 用关系运算符连接操作数组成的表达式成为关系表达式 优先级 双目 左结合性 优先级相同 优先级相同 且前4个运算符的优先级高于后面2个运算符的优先级 关系运算符的优先级低于所有算术运算符的优先级 课件制作 18 4 4关系运算 例 includeintmain intx 2 y 3 z z 3 1 x 1 y 2 cout x x y y z z endl x 2 y 3 z 1Pressanykeytocontinue 课件制作 19 4 4关系运算 注意等于号 与赋值号 的区别 误写 误写 避免对两个实数作相等或不相等的比较 x 3与x 3区别 例 intz1 z2 floatf1 f2 f1 100 111119f f2 100 1111191f z1 f1 f2 z2 fabs f1 f2 1e 6 课件制作 20 4 4关系运算 计算关系表达式的值与判断关系表达式的真假intz z 3b c 课件制作 21 4 5逻辑运算 逻辑运算符 逻辑与 逻辑或 逻辑非 是单目 高于算术运算 和 都是双元运算 比 优先级高 但都低于关系运算 关系运算低于算术运算 用逻辑运算符连接操作数组成的表达式成为逻辑表达式 课件制作 22 4 5逻辑运算 运算规则运算量的值是非0时 认为是 真 是0时 认为是 假 当两个运算量都是 真 时 的值为真 其它情况为假 当两个运算量都是假时 的值为假 其它情况为真 逻辑运算的结果为真时 用1表示 为假时 用0表示 课件制作 23 4 5逻辑运算 例 inta 7 b 5 c 8 a b b c a大于b 并且b大于c 结果为假 a b b c a大于b 或者b大于c 结果为真 a 如果a是0 结果非0 如果a是非0 结果是0并不改变a的值 结果为假 课件制作 24 4 5逻辑运算 要学会把分支结构中的条件用关系或逻辑表达式描述出来 例 下列数学式子35并且y5或y 3x不大于5 对应的逻辑表达式x 3 x5 y5 y5 例 判断某个字符ch是否为大写字母charch cin ch ch A 课件制作 25 例 判断某年year是否是闰年 闰年的条件是符合下面两者之一 A 能被4整除 但不能被100整除B 能被400整除 intyear t1 t2 t3 t scanf d 4 5逻辑运算 课件制作 26 4 5逻辑运算 短路表达式求0 a或1 a时 则不必计算表达式a的值如果多个表达式用 连接 则一个假表达式将使整个连接都为假如果多个表达式用 连接 则一个真表达式将使整个连接都为真 课件制作 27 4 5逻辑运算 例 includeintmain intx y z x y 0 z x x 1y 0z 0Pressanykeytocontinue 课件制作 28 4 5逻辑运算 例 includeintmain inti 0 j 0 k 5 z z i 0 j 0 k cout i i tj j tk k tz z endl i 1j 0k 5z 1Pressanykeytocontinue 课件制作 29 4 6条件运算 条件运算符 三元运算 优先级只比赋值高条件表达式 表达式1 表达式2 表达式3 执行过程 例 intage intnIsAdult 是否成年人age 18 nIsAdult 1 nIsAdult 0 课件制作 30 4 7逗号运算符 作为分隔符使用如 floatf1 f2 f3 f4 作为运算符使用逗号表达式的一般形式 表达式1 表达式2 表达式n逗号表达式的值是最右边表达式的值 优先级最低如果逗号表达式的最后一个表达式为左值 则该逗号表达式为左值 intx y a b x y 10 y 2 cout x x y y endl b a 4 5 2 a a 6 cout a a b b endl a 1 b x 1 y 5 cout a a b b x x y y endl 课件制作 31 4 8sizeof运算符 一般形式为 sizeof 数据类型 sizeof 变量名 sizeof double longdoublea sizeof a includeintmain cout DatatypeNumberofbytes endl cout endl cout char sizeof char endl cout int sizeof int endl cout float sizeof float endl cout double sizeof double endl cout shortint sizeof shortint endl cout longint sizeof longint endl cout longdouble sizeof longdouble endl return1 课件制作 32 4 9位运算 位运算符 优先级由高到低 位运算量只能是整型或字符型的数据 按位与运算 按位异或运算 按位或运算 按位求反 按位右移运算 课件制作 33 4 9位运算 按位与运算符 运算规则 如果参加运算的两个运算量的相应位都是1 则该位的结果值为1 否则为0 应用 对字节中某N位进行清零 00011000 00000001 课件制作 34 例3 判断一个数据的某位是否为1 inta cin a 判断a是正数还是负数 10000000000000000000000000000000 4 9位运算 课件制作 35 4 9位运算 按位或运算符 运算规则 如果两个运算量的相应位不同 则该位的结果值为1 相同则为原值应用 对字节中某N位进行置1 11111010 01111111 课件制作 36 4 9位运算 按位异或运算符 运算规则 如果两个运算量的相应位不同 则该位的结果值为1 否则为0 又称不进位加应用 对数据进行简单的加密 两次异或运算又恢复为原值 11100010 01110100 00001111 课件制作 37 4 9位运算 按位取反 运算规则 对操作数的各位取反 即0变为1 1变为0 应用 对数据进行简单的加密 两次取反运算又恢复为原值 10000101 课件制作 38 4 9位运算 左移位 运算规则 对操作数X的每一位向右平移n位 当X为有符号数时 左边空位补符号位上的值 算术移位 当X为无符号数时 左边空位补0 逻辑移位 应用 快速地实施整数的乘法 右移n位相当于除以2n位运算与赋值运算的复合 0011110060 例1 00001111152 例2 0000111115 2 000000113 课件制作 39 4 10C 操作符的优先级与结合性 C 语言规定了运算符的优先级和结合性在求解表达式时 先按运算符的优先级别高低次序执行 例如先乘除后加减 如a b c相当于a b c 如果在一个运算对象两侧的运算符的优先级别相同 如a b c 则按规定的 结合方向 处理算术运算符的结合方向为 自左至右 即先左后右 自左至右的结合方向 又称 左结合性 即运算对象先与左面的运算符结合有些运算符的结合方向为 自右至左 即右结合性 例如赋值运算符 结合性 的概念在其他一些高级语言中是没有的 是C和C 的特点之一 参见教材表3 1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年互联网金融知识产权交易保密及使用授权协议
- 2025年新型城镇化产业园区土地置换及使用权交易合同
- 2025高端医疗设备研发与知识产权转移合作协议
- 二零二五年度建筑工程专业分包施工合同(含节能减排技术)
- 2025年销售代表招聘面试技巧与常见问题解答指南
- 2025年初级焊工工艺技能考试试题集
- 2025年税务局公务员招录面试模拟题详解及备考策略
- 2025年初入金融行业银行柜员面试模拟题及答案解析
- 二零二五年度智能机器人技术咨询合同范本
- 二零二五年度水利工程借款施工管理合同
- 菲林格尔维修人员上门维修服务规范525
- 龋病的分类及临床表现
- 个体工商户合伙协议书律师审核起草
- 抚养费纠纷民事起诉状(10篇)
- 2025年郑州铁路职业技术学院单招职业适应性测试题库必考题
- 核安全863文化宣讲
- 学费分期付款申请书
- GB/T 23694-2024风险管理术语
- 初中班主任培训讲座课件(27p)-2024鲜版
- 数据驱动的智能家政服务平台研究
- 《小儿拍背排痰》课件
评论
0/150
提交评论