1 / 65

主要内容安排

主要内容安排. 第一章: C++ 入门 第二章:基本数据类型与输入输出 第三章:表达式与语句 第四章:过程化语句 第五章:函数 第六章:程序结构 第七章:数组. 第三章 表达式和语句. 3.1 表达式 3.2 算术运算和赋值 3.3 算术类型转换 3.4 增量和减量 3.5 关系与逻辑运算 3.6 if 语句 3.7 条件运算符 3.8 逗号表达式 3.9 求值次序与副作用 小结. 3.1 表达式. 主要内容: 1. 表达式概述 2. 左值和右值 3. 优先级和结合性 4. 语句与块.

roza
Download Presentation

主要内容安排

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 主要内容安排 第一章:C++入门 第二章:基本数据类型与输入输出 第三章:表达式与语句 第四章:过程化语句 第五章:函数 第六章:程序结构 第七章:数组

  2. 第三章 表达式和语句 3.1 表达式 3.2 算术运算和赋值 3.3 算术类型转换 3.4 增量和减量 3.5 关系与逻辑运算 3.6 if语句 3.7 条件运算符 3.8 逗号表达式 3.9 求值次序与副作用 小结

  3. 3.1 表达式 主要内容: 1. 表达式概述 2. 左值和右值 3. 优先级和结合性 4. 语句与块

  4. 1.表达式概述 定义:是操作符、操作数和标点符号组成的序列。其目的是用来说明一个计算过程,且表达式可以嵌套。 计算规则: (1)约定:类型转换。 (2)求值次序:指表达式中各个操作数的求值次序视编译器不同而不同。 (3)优先级:先做优先级高的操作。 (4)结合性:同等优先级时该先做哪个操作的规定。

  5. 1.表达式概述(续) 例: (1)float a; a=5/2; //a得到的值为2,属规则(1)(2)d=a+b+c; //C++规定:+-的结合性从左至右 d=a=3; //C++规定:=结合性从右至左 (3)d=a+b*c; //优先级次序:*+=

  6. 2.左值和右值 定义: 左值:能出现在赋值表达式左边的表达式。左值表达式具有存放数据的空间,并且存放是允许的。左值可作为右值表达式。 右值:只能出现在赋值表达式的右边。 表达式按值分类:左值、右值、不产生值。

  7. 2.左值和右值(续) 例: (1)int a=3; //a是变量,是左值 const int b=4;//b是常量,不是左值 (2)int a,b=6; a=b; //b是变量,所以是左值,此处为右值 a=8; //8是常量,只能作右值,不能作为左值 (3)int a; (a=4)=28; //OK:a=4是左值表达式,可以被赋为28

  8. 3.优先级和结合性 补充: 操作符分类: (1)单目:操作符 数 | 数 操作符 (2)双目:数 操作符 数 (3)三目:数 ? 数 :数

  9. 3.优先级和结合性(续) 优先级:按从高到低。 结合性: (1)从左至右:其余 (2)从右至左:单目、三目、赋值

  10. 优先级 操作符 结合性 1 ()[ ] —〉 左—〉右 2 !~ + - ++ —*(强制转换类型)sizeof new delete 右—〉左 3 . * -〉* 左—〉右 4 * / % 左—〉右 5 + - 左—〉右 6 << >> 左—〉右 7 < <= >= > 左—〉右 8 = = ! = 左—〉右 9 & 左—〉右 10 ^ 左—〉右 11 | 左—〉右 12 && 左—〉右 13 || 左—〉右 14 ?: 右—〉左 15 = *= /= += -= <<= >>= %= &= ^= &&= ||= 右—〉左 16 , 左—〉右

  11. 4.语句与块 语句作用:规定程序执行的控制流。 语句分类: (1)表达式语句: 表达式; (2)空语句: ; (3)复合语句/块: 括在一对花括号{}中的语句序列。

  12. 第三章 表达式和语句 3.1 表达式 3.2 算术运算和赋值 3.3 算术类型转换 3.4 增量和减量 3.5 关系与逻辑运算 3.6 if语句 3.7 条件运算符 3.8 逗号表达式 3.9 求值次序与副作用 小结

  13. 3.2 算术运算和赋值 主要内容: 1. 操作符种类 2. 赋值缩写 3. 溢出

  14. 1.操作符种类 优先级:+ - * / % + -(加、减)

  15. 2.赋值缩写 (1)当一个变量既出现在表达式左边又出现在右边时,可以缩写。 (2)赋值以及缩写都要求左边的表达式为左值。 (3)赋值构成一个表达式,因而它具有值。赋值表达式的值为赋值符左边表达式的值。 (4)优点:有效,可读性不差。

  16. 2.赋值缩写(续) 补充格式:变量名?=表达式 转化为:变量名=变量名?(表达式) 赋值缩写的操作符有: *= /= += -= |= <<= >>= %= &= &&= ||= 例:int x,y,z; x=x*y; //x*=y; x=x+z; //x+=z; x=x/y; //x/=y; x=x%y; //x%=y;

  17. 3.溢出 原因: 一个变量被赋予一个超出其数据类型表示范围的数值。 结果: 不会引起编译错误,但会使运行结果发生偏差。 例: 一个整型变量,用任何一个超过表示范围的整数初始化,得到的值为用该整型范围作模运算后的值。 int w=142896; //值为11824 w为2字节整型数时,142896=2*65536+11824

  18. 第三章 表达式和语句 3.1 表达式 3.2 算术运算和赋值 3.3 算术类型转换 3.4 增量和减量 3.5 关系与逻辑运算 3.6 if语句 3.7 条件运算符 3.8 逗号表达式 3.9 求值次序与副作用 小结

  19. 3.3 算术类型转换 主要内容: 1. 分类 2. 自动转换 3. 强制转换

  20. 3.3 算术类型转换(续1) 1.分类 (1)隐式(称自动转换) (2)显式(称强制转换) 2.自动转换 定义:C++遇到两种不同数据类型的数值进行运算时,会将两个数作适当的类型转换,再进行运算。

  21. 2.自动转换(续1) 规则:char unsigned char short unsigned short int unsigned int long int float unsigned long double long double 小结:转换总是朝表达数据能力更强的方向,并逐个运算符进行。

  22. 2.自动转换(续2) 例:float f=3.5; int n=6; long k=21; double ss=f*n+k/2;

  23. 3.强制转换 补充格式:(类型名)(表达式) 说明: (1)在一个数值或变量前加上带括号的类型名。 (2)类型名后跟带括号的数值或表达式(C不可以)。 例: cout<<(unsigned long)234*456/6<<endl; cout<<(unsigned long)(243)*456/6<<endl;

  24. 第三章 表达式和语句 3.1 表达式 3.2 算术运算和赋值 3.3 算术类型转换 3.4 增量和减量 3.5 关系与逻辑运算 3.6 if语句 3.7 条件运算符 3.8 逗号表达式 3.9 求值次序与副作用 小结

  25. 3.4 增量和减量 1.操作符:++ -- 优先级:高 结合性:从右至左 2.使用: (1)++a,--a 称前增量:先修改操作数使之增1/减1,再将增1/减1后的a值作为表达式的值。 (2)a++,a-- 称后增量:先将变量a的值作为表达式的值确定下来,再将a 增1/减1。

  26. 3.4 增量和减量(续1) 3.注意: (1)增量和减量的操作数必须是左值,但前增量的结果仍是左值,而后增量的结果不是左值。 (2)++,--是一个整体,不能有空格,且编译首先识别++,--。

  27. 3.4 增量和减量(续2) 例: c=a+b; //对 c=a++b; //错 c=a++ b c=a+++b; //对 c=a++ +b c=a++++b; //错 c=a++ ++b c=a+++++b; //错 c=a++ ++ +b

  28. 第三章 表达式和语句 3.1 表达式 3.2 算术运算和赋值 3.3 算术类型转换 3.4 增量和减量 3.5 关系与逻辑运算 3.6 if语句 3.7 条件运算符 3.8 逗号表达式 3.9 求值次序与副作用 小结

  29. 3.5 关系与逻辑运算 主要内容: 1. 运算符 2. 比较运算符 3. 不等于运算符 4. 嵌入赋值 5. 逻辑非运算符 6. 逻辑运算 7. 短路表达式

  30. 1.运算符 (1)关系运算符: > >= < <= 大于 大于等于 小于 小于等于 == != 等于 不等于 结合性:从左至右 结果: 真假(1或0)

  31. 1.运算符(续) (2)逻辑运算符: ! 逻辑非 && 逻辑与 || 逻辑或 注意: (1) >= <= != == && ||都是一个操作符的整体,中间不能有空格。 (2) >= <= !=字符顺序不能颠倒。

  32. 2.比较运算符 (1) =:称赋值运算符,产生的值是所赋的值。 (2) ==:称比较运算符,产生的值是比较的结果(1/0)。 例: (1)x=somevalue; if (x=9) cout <<”x is not 0\n”;//总会执行 (2) x=somevalue; if (x=0) cout <<”x is 0\n”; //总是不会执行

  33. 3.不等于运算符 (1)!=:称不等于运算符 (2)=!:称等于非运算符 关系:二者意义完全不同,不能互替。 例: (1)if (x!=9) cout <<”x is not 0\n”;//可能会执行 (2)if (x=!9) cout <<”x is not 0\n”;//总是不会执行

  34. 4.嵌入赋值 有时候,需要将一个函数值赋给一个变量,然后比较该变量的值与预定值是否相等。 例: x=func( ); if(x==somevalue) //语句 相当于: if((x=func( ))==somevalue) //语句

  35. 5.逻辑非运算 !:称逻辑非运算符,求反。 例: (1)!0=1 (2)!1=0 (3)if(!(x==9)) cout <<”x is not 9.\n” ;

  36. 6.逻辑运算 &&:称逻辑与运算符,同真则真,有假则假。 || :称逻辑或运算符,有真则真,全假则假。 例: int temp=90,humi=80; if(temp>=80 && humi>=50) //语句 if(temp<60 || temp >80) //语句

  37. 7.短路表达式 (1)如果多个表达式用&&连接,则一个假表达式将整个连接都为假。 (2)如果多个表达式用||连接,则一个真表达式将使整个表达式都为真。 例: (1)int n=3,m=6; if (n>4 && m++<10) //语句 (2)int temp=10; if (temp<60 || temp>80) //语句

  38. 第三章 表达式和语句 3.1 表达式 3.2 算术运算和赋值 3.3 算术类型转换 3.4 增量和减量 3.5 关系与逻辑运算 3.6 if语句 3.7 条件运算符 3.8 逗号表达式 3.9 求值次序与副作用 小结

  39. 3.6 if语句 主要内容: 1. if语句(单分支) 2. 空语句 3. if…else语句(双分支) 4. 解决二义性

  40. 1.if语句(单分支) 格式: (1)if (条件表达式) 语句; (2)if (条件表达式) {语句;} //复合语句 执行过程:如果条件表达式进行一次测试,且测试为真,则执行后面的语句。

  41. 1.if语句(续1) 例: #include <iostream.h> #include <conio.h> void main( ) { cout <<”please input the b key to hear a bell.\n”; char ch=getche( ); if (ch==’b’) cout <<’\a’; }

  42. 2.空语句 格式: if (条件表达式) ; 说明: ;标志if语句的的结束,不管条件表达式为T/F,总是接着执行后面的语句。

  43. 3.if…else语句 格式: if(条件表达式) //语句1 else //语句2 执行过程: “不是---/就是”,如果条件表达式为真,则执行语句1,否则执行语句2。 说明:语句1、语句2可以是简单语句或复合语句。

  44. 3.if…else语句(续1) 补充:if语句的嵌套 if (条件表达式) if (条件表达式1) 语句11 else 语句12 else if (条件表达式2) 语句21 else 语句22 实现:多选一

  45. 3.if…else语句(续2) 变形:多分支 if (条件1) 语句1 else if (条件2) 语句2 else if (条件3) 语句3 else … else if (条件n) 语句n else 语句n+1

  46. 3.if…else语句(续3) 例: #include <iostream.h> #include <conio.h> void main( ) { cout <<”please input the b key to hear a bell.\n”; char ch=getche( ); if (ch==’b’) cout <<’\a’; else if(ch==’\n’) cout<<”what a boring selection on…\n”; else cout <<”bye!\n”; }

  47. 4.解决二义性 C++规定: if…else 语句成对的规则是: else连接到上面第1个没有配对的且为可见的if上。 说明: 编译并不看程序的缩进格式,而只关心语句。

  48. 补充习题 1.分段函数 1 x>0 Y= 0 x=0 -1 x<0

  49. 补充习题(续1) 方法1:三个单分支if语句 #include <iostream.h> void main( ) { int x,y; cout <<”please input a number.\n”; cin>>x; if (x>0) y=1; if (x==0) y=0; if (x<0) y=-1; cout <<“y=”<<y<<endl; }

  50. 补充习题(续2) 方法2:一个if语句的嵌套 #include <iostream.h> void main( ) { int x,y; cout <<”please input a number.\n”; cin>>x; if (x>0) y=1; else if (x==0) y=0; else y=-1; cout <<“y=”<<y<<endl; }

More Related