第02章 C++数据类型、运算符和表达式.ppt

上传人:hyn****60 文档编号:70988543 上传时间:2023-01-31 格式:PPT 页数:59 大小:471.50KB
返回 下载 相关 举报
第02章 C++数据类型、运算符和表达式.ppt_第1页
第1页 / 共59页
第02章 C++数据类型、运算符和表达式.ppt_第2页
第2页 / 共59页
点击查看更多>>
资源描述

《第02章 C++数据类型、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《第02章 C++数据类型、运算符和表达式.ppt(59页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、目目 录录F第第1章章 C+概述概述F第第2章章 数据类型、运算符和表达式数据类型、运算符和表达式F第第3章章 简单的输入简单的输入/输出输出F第第4章章 C+的流程控制的流程控制F第第5章章 函数函数F第第6章章 编译预处理编译预处理F第第7章章 数组数组F第第8章章 结构体、共同体和枚举类型结构体、共同体和枚举类型F第第9章章 指针和引用指针和引用F第第10章章 类和对象类和对象F第第11章章 类和对象的其他特性类和对象的其他特性F第第12章章 继承和派生继承和派生F第第13章章 多态性多态性F第第14章章 输入输入/输出流输出流F第第15章章 模板模板v第一部分第一部分 面向过程的程序设

2、计面向过程的程序设计v第二部分第二部分 面向对象的程序设计面向对象的程序设计第第2章章 数据类型、运算符与表达式数据类型、运算符与表达式简单地说:程序简单地说:程序=数据结构数据结构+算法算法C+程序的构成:程序的构成:(1)数据描述)数据描述(2)执行步骤()执行步骤(算法)算法)例例1.1一个简单的一个简单的C+程序程序#include void main(void)int num,square;cout num;square=num*num;cout num的的平方平方为为:square n;下面学习:程序的各种语法元素下面学习:程序的各种语法元素2.1 保留字和标识符保留字和标识符2.

3、1.1 保留字(保留字(Reserved Word or Keyword)C+语言自身使用的,已有特殊含义和用途的英文语言自身使用的,已有特殊含义和用途的英文单词称为单词称为保留字保留字或或关键字关键字。如例如例1.1中的类型说明符中的类型说明符 int,用于定义整型变量。用于定义整型变量。用户不能将其作为自己的变量名或函数名使用。用户不能将其作为自己的变量名或函数名使用。2.1.2 标识符标识符标识符标识符(identifier):有效字符序列,有效字符序列,用来标识用户自己定义的用来标识用户自己定义的 变量名、符号常量名、变量名、符号常量名、函数名、数组名、类型名、文件名等函数名、数组名、

4、类型名、文件名等命名规则命名规则:只能由字母、数字和下划线三种字符组只能由字母、数字和下划线三种字符组 成,且第一个字符必须为字母或下划线成,且第一个字符必须为字母或下划线 最大长度为最大长度为 1 247 个字符。个字符。如如:MyName average GetDay StudentName _above Lotus_1_2_3 非法标识符如非法标识符如:M.D.John$123 3Dmax合法标识符如合法标识符如:(有时用匈牙利命名法)(有时用匈牙利命名法)例:例:#include void main(void)int a,b,sum;/*定义变量定义变量 */a=123;b=456;s

5、um=a+b;coutsum is sumn;保留字保留字标识符标识符(变量名、函数名、对象名)(变量名、函数名、对象名)常数常数2.2 C+的基本数据类型的基本数据类型数据类型数据类型基本类型基本类型导出类型导出类型整型整型实型实型字符型字符型空类型空类型(无值型无值型)单精度型单精度型双精度型双精度型数组类型数组类型指针类型指针类型结构体类型结构体类型共用体类型共用体类型枚举类型枚举类型不论是变量还是常数,在计算机内部都要按照某种不论是变量还是常数,在计算机内部都要按照某种形式存放,存放形式由数据类型决定。形式存放,存放形式由数据类型决定。类类 型型 标标 识识名名 称称占用占用字节数字节

6、数取取 值值 范范 围围char字符型字符型1128 127int 整型整型4231(2311)float实型实型41038 1038double双精度双精度实型实型810308 10308以上基本类型数据以上基本类型数据占内存字节占内存字节不相同,不相同,因此因此数值范围数值范围也也不同,不同,见表见表 2-1 及表及表 2-2对基本类型,可以加修饰,如:对基本类型,可以加修饰,如:int 型型int 占占4 字节字节short int 占占 2 字节字节 long int 占占4 字节字节int:signed int unsigned int short int:signed short

7、int unsigned short intlong int:signed long int unsigned long int最简形式:最简形式:intunsigned int shortunsigned shortlongunsigned long 再加修饰,如:再加修饰,如:注意注意:int 型变量与型变量与 unsigned int 型变量的区别型变量的区别 32 位位 范围范围 int 型:型:-231 (补码补码)(231-1)符号位符号位 32 位位 范围范围unsigned int 型:型:0(232-1)无符号位无符号位2.3 常量和变量常量和变量2.3.1 常量常量常量常量

8、:在程序运行过程中,其值不能被改变的量:在程序运行过程中,其值不能被改变的量#include void main(void)int a,b,sum;/*定义变量定义变量 */a=123;b=456;sum=a+b;coutsum is sumn;常量常量(常数常数)1.整型常量整型常量 十进制整数十进制整数 123,-456 八进制整数八进制整数 0123,-011 十六进制整数十六进制整数 0 x123,-0 xAB 长整型与无符号型常数长整型与无符号型常数 12L,0234L,-0 xABL 12U,0234U,0 xABU2.实型常量实型常量(在内存中以浮点形式存放)(在内存中以浮点形式

9、存放)(均为十进制,无数制区分)(均为十进制,无数制区分)小数形式小数形式:必须有小数点必须有小数点 1.65 1.123 指数形式指数形式(也称为科学表示法)(也称为科学表示法):如如 123000.0 可写为可写为 1.23e5 0.00368 可写为可写为 3.68E-3 e 或或 E前必须有数字,前必须有数字,1000写为写为 1e3 不能写为不能写为 e33.字符型常量字符型常量用于表示用于表示ASCII字符,见附录字符,见附录A。在内存中在内存中存放对应的存放对应的ASCII码值,如码值,如 a 的的ASCII码为码为 97,则在内存中用一个字节存放:,则在内存中用一个字节存放:在

10、源程序中在源程序中最基本的表示形式为:最基本的表示形式为:单引号括起来的一个字符,如:单引号括起来的一个字符,如:a A?0 1 1 0 0 0 0 1对于不可打印的字符,可以用转义字符形式表示对于不可打印的字符,可以用转义字符形式表示。注意:注意:n 与与 n 的区别的区别!转义字符:转义字符:以反斜杠以反斜杠“”引导的特殊形式的引导的特殊形式的 非显示字符或表示特定意义的字符常量非显示字符或表示特定意义的字符常量n t b ddd xhh 见表见表 2-3注意:注意:字母字母 A 的的 ASCII 码是码是(65)10=(101)8=(41)16在程序中表示字母在程序中表示字母A,可以有三

11、种方法:可以有三种方法:A 101 x41n 表示表示一个一个控制字符,控制字符,n 表示一个字母。表示一个字母。4.字符串常量字符串常量-用双引号括起来的字符序列用双引号括起来的字符序列(在内存中存放字符序列的在内存中存放字符序列的ASCII码值,码值,最后加一个结尾标志)最后加一个结尾标志)如如:How do you do.CHINA a字符串结束标志符是:字符串结束标志符是:0注意:注意:a 和和 a 是不同的。是不同的。CHINA0.符号常量符号常量:用标识符代表一个常量,:用标识符代表一个常量,必须先定义后使用。必须先定义后使用。例:定义标识符常量例:定义标识符常量#define P

12、RICE 30#define PI 3.1425926#define S Chinaconst f loat pi=3.142.3.2 符号常量符号常量例例2.1 符号常量的使用符号常量的使用#include#define PI 3.1425926void main(void)double angle,radian;cin angle;radian=angle*PI/180;/角度角度弧度弧度cout radian n;好处:好处:(1)提高程序的可读性。)提高程序的可读性。(2)程序中使用多处,一改全改。)程序中使用多处,一改全改。2.3.3 变量变量变量变量:其值可以改变的量。其值可以改变

13、的量。变量名变量名:一个变量的符号名一个变量的符号名,由由标识符标识符构成。构成。一个变量占据内存一定的一个变量占据内存一定的存储单元存储单元,在存储单元中存放该在存储单元中存放该变量的值变量的值。int a,b;/定义定义2个整型变量个整型变量a,bunsigned u;/定义定义1个无符号整型变量个无符号整型变量ufloat f;/定义定义1个单精度实型变量个单精度实型变量double d;/定义定义1个双精度实型变量个双精度实型变量char c1,c2,c3;/定义定义3个字符型变量个字符型变量c1,c2,c3 1.定义变量定义变量注意注意:(1)区别大小写区别大小写:如如 sum 与与

14、 Sum 为不同的变量名。为不同的变量名。(2)先定义后使用先定义后使用:分配单元分配单元、确定类型、语法检查、确定类型、语法检查(3)在一个程序单元中不能重复定义。在一个程序单元中不能重复定义。(4)关键字(保留字)不能作为标识符。关键字(保留字)不能作为标识符。(5)最大长度随不同的最大长度随不同的 C+语言系统而定语言系统而定:VC+识别前识别前 247 个字符,超过无效。个字符,超过无效。(6)按义取名。按义取名。2变量赋初值变量赋初值给变量赋初值的方法有两种:给变量赋初值的方法有两种:(1)变量定义后,用赋值语句赋初值。)变量定义后,用赋值语句赋初值。例如:例如:int a,b;a=

15、12;b=24;char c1,c2;c1=A;c2=B;(2)在定义变量的同时,)在定义变量的同时,直接赋初值(称为变量的初始化)。直接赋初值(称为变量的初始化)。例如例如:int a=12,b=-24;char c1=A,c2=B;2.4 基本运算符和表达式基本运算符和表达式2.4.1 C+运算符及表达式简介运算符及表达式简介完成对常量、变量作运算的符号称为完成对常量、变量作运算的符号称为运算符运算符。把参与运算的对象称为把参与运算的对象称为操作数操作数。操作数可以是常量和变量等。操作数可以是常量和变量等。各种运算符见表各种运算符见表 2-4一元运算符、二元运算符、三元运算符一元运算符、二

16、元运算符、三元运算符2.4.2 算术运算符和算术表达式算术运算符和算术表达式基本算术运算符基本算术运算符:+-*/%/整数运算时为整除,结果为整数。整数运算时为整除,结果为整数。%(模运算或称模运算或称求余求余运算运算)必须为整型数据。必须为整型数据。例例:7/3 结果?结果?7.0/3 结果?结果?7%3 结果?结果?22.3333331由运算符和操作数构成由运算符和操作数构成表达式表达式:如:如:a+b a*(c+d)a*c+d2.4.3 运算优先级和结合性运算优先级和结合性优先级优先级:对于同一表达式中出现多个运算符,先算对于同一表达式中出现多个运算符,先算 哪一个。哪一个。结合性结合性

17、:在两种运算优先级相同时,在两种运算优先级相同时,“自左向右自左向右”还是还是“自右向左自右向左”运算称为结合性。运算称为结合性。如:如:算术运算符的算术运算符的优先级优先级与与结合性结合性优先级优先级:+-较低较低*/%较高较高结合性结合性:自左向右自左向右例:表达式:例:表达式:6/3*2 “自左向右自左向右”或或“自右向左自右向左”运算结果不运算结果不同同2.4.4 关系运算符和关系表达式关系运算符和关系表达式“关系运算”实际上就是“比较运算”关系运算符及其优先次序关系运算符及其优先次序=!=小于小于等于大于大于等于恒等于不等于优先级相优先级相同同(较高较高)优先级相优先级相同同(较低较

18、低)关系运算符及其优先级说明a=bc 等效于等效于 a=(ba+b 等效于等效于 c(a+b)算术关系(,和=)关系(=和!=)高 低关系表达式1.用关系运算符连接两个表达式如:如:ab,a+bb+c,ab 的值为的值为 0则表达式则表达式 bb)&(xy)ab&xy(a=b)|(x=y)a=b|x=y(!a)b!a b(2)C+编译系统在给出逻辑运算结果时,以数值 1 代表“真”以数值 0 代表“假”(1)运算时,在判断一个量是否为“真”时,以非0 代表“真”以0 代表“假”例如:已知 a=4 则!a 的值是 0 已知 a=0,b=5则 a&b 的值是 0则 a|b 的值是 1则!a&b 的

19、值是 1注意:注意:在C+程序中,欲表示数学关系 0 x10,C+的逻辑表达式必须写成 0=x&x=10,而不能写成 0=x=10。为什么?2.4.6 位运算符和位运算表达式位运算符和位运算表达式 位运算是对整型数据的运算位运算是对整型数据的运算(可以操作到位可以操作到位),符号位参与运算,符号位参与运算,主要用于系统程序设计。主要用于系统程序设计。位运算符共有位运算符共有6 种种:它们是:按位它们是:按位与与(&)按位按位或或(|)按位按位异或异或()按位按位取反取反()左移左移()举例:按位举例:按位“与与”例如:已知:例如:已知:char a=3,b=2,c;求:求:c=a&b;此时,可

20、将此时,可将a、b、c看成是看成是一个字节长度的整型数。一个字节长度的整型数。a 0000 0011&b 1111 1110 c 0000 0010结果变量结果变量 c 的值为的值为 2。其它位运算,自学。其它位运算,自学。2.4.7 自增、自减运算符和表达式自增、自减运算符和表达式使变量的值加使变量的值加 1 或减或减 1 的运算的运算如如:+i,-i在使用在使用 i 之前加或减之前加或减 1i+,i-在使用在使用 i 之后加或减之后加或减 1int i=3,j;j=+i;运算后运算后 i=?,j=?int i=3,j;j=i+;运算后运算后 i=?,j=?注意注意:只能用于变量,不能用于常

21、量和表达式,只能用于变量,不能用于常量和表达式,如:如:3+;(a+b)+;错误错误i=4,j=4i=4,j=32.4.8 赋值运算符和赋值表达式赋值运算符和赋值表达式1赋值运算符赋值运算符 “=”是赋值运算符,是赋值运算符,赋值表达式格式:赋值表达式格式:求解过程:求解过程:求出求出 的值,赋给的值,赋给 赋值表达式的值:赋值表达式的值:为为 的值的值如:如:a=b+c 还可以是另一个赋值表达式,还可以是另一个赋值表达式,如如:a=b=5 a=5+(c=6)a=(b=4)+(c=6)如果如果 a 初值为初值为 2,表达式结果?,表达式结果?结果为结果为 7如如:a=33是最简单的表达式是最简

22、单的表达式i=i+1它不同于它不同于“等于号等于号”注意优先级注意优先级 与结合性与结合性 b=c=d=a+5自右向左自右向左表达式结果分别为:?表达式结果分别为:?5 11 102.复合赋值运算符复合赋值运算符复合赋值运算符复合赋值运算符x*=y+8等价于等价于 x=x*(y+8)x%=3等价于等价于 x=x%3x/=9简写为:简写为:a+=3 a=a+3简写为:简写为:a-=b a=a-b同理:同理:赋值运算符赋值运算符 以及以及 复合赋值运算符复合赋值运算符的运算优先级比的运算优先级比算术运算符算术运算符优先级低,优先级低,运算结合性为运算结合性为自右向左。自右向左。等价于等价于 x=x

23、/9例例:a+=a-=a*a如果如果 a 初值为初值为 2,表达式结果?,表达式结果?a+=a-=a*a结果结果 a 的值为的值为-4表达式的结果也为表达式的结果也为-42.4.9 逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符逗号运算符:,逗号表达式逗号表达式:,.,如如:a=3*5,a*4,a+5逗号运算符逗号运算符优先级最低优先级最低,结合性:自左向右结合性:自左向右求解过程:求解过程:依次计算依次计算、.的值。的值。逗号表达式的值:逗号表达式的值:为为 的值的值运算结束后:运算结束后:a 的值为的值为 15 整个表达式的值为整个表达式的值为 20a=3*5,a*4x=(a=3,

24、6*3)赋值表达式赋值表达式x=a=3,6*3逗号表达式逗号表达式例:例:如下表达式,如下表达式,运算结束后运算结束后 a=?x=?表达式表达式=?a=15,表达式表达式=60a=3,x=18,表达式表达式=18a=3,x=3,表达式表达式=18逗号表达式逗号表达式2.4.10 sizeof()运算符和表达式运算符和表达式 例例 int i;double x;sizeof(int)sizeof(i)sizeof(double)sizeof(x)格式:格式:sizeof(类型标识类型标识/变量名变量名)功能:功能:求某类型变量所占字节数求某类型变量所占字节数结果均为结果均为 4结果均为结果均为

25、8例:例:求求&2.4.11 逻辑表达式运算优化时的副作用逻辑表达式运算优化时的副作用从左向右扫描,计算从左向右扫描,计算,当当 为为真真时,继续计算时,继续计算 当当 为为假假时,即能确定整个表达式时,即能确定整个表达式的值为假,则停止计算的值为假,则停止计算例:例:求求|从左向右扫描,计算从左向右扫描,计算,当当 为为假假时,继续计算时,继续计算 当当 为为真真时,即能确定整个表达式时,即能确定整个表达式的值为真,则停止计算的值为真,则停止计算课堂练习课堂练习int x,y,z,w;输出结果?输出结果?x=y=z=1;w=+x|+y&+z;cout x t y t z n;cout w n

26、;输出:输出:2 1 1 12.5 类型转换类型转换2.5.1 赋值时的自动类型转换赋值时的自动类型转换 如果赋值运算符两侧的类型不一致,则遵循以下如果赋值运算符两侧的类型不一致,则遵循以下几条原则进行类型转换后赋值。几条原则进行类型转换后赋值。1.整型变量整型变量实型数据实型数据,舍弃小数舍弃小数(无四舍五入无四舍五入)。int i=3.96;i 为为 32.实型变量实型变量整型数据整型数据,数值不变数值不变,有效数位增加。有效数位增加。float f=23;f 为为 23.0 double d=23;d 为为 23.03整型数据之间相互赋值整型数据之间相互赋值 整型数据类型有:整型数据类型

27、有:signed char unsigned charsigned short unsigned shortsigned int unsigned intsigned long unsigned long各种类型的整型数占用的字节数是不同的,其二进各种类型的整型数占用的字节数是不同的,其二进制位数有长有短。它们之间相互赋值,其实就是它制位数有长有短。它们之间相互赋值,其实就是它们内存数据之间的赋值,分两种情况。们内存数据之间的赋值,分两种情况。下面以下面以 int 型数据与型数据与 char 型数据之间的赋值进行说明:型数据之间的赋值进行说明:将将 int 型变量赋给字符型变量时型变量赋给字符

28、型变量时(长长短短)方法:方法:截取低位赋值截取低位赋值例:例:signed char c1=250;c1真值为真值为-6 250 为为int型常数型常数,32 位:位:00000000 1111 1010 c1:1111 1010 将字符型变量赋给将字符型变量赋给 int 型变量时型变量时(短短长长),又分成两种情况:又分成两种情况:有符号的字符型数据有符号的字符型数据整型变量整型变量 需符号位扩展需符号位扩展 例:例:char c1=15;int i;i=c1;i 为整型变量为整型变量 32 位:位:00000000 0000 1111 c1(正号正号):0000 1111扩展扩展正号,结

29、果正号,结果i 的的真值为真值为 15 15 为整型常数为整型常数 32 位:位:00000000 0000 1111 char c1=250;int i;i=c1;i 为整型变量为整型变量 32 位:位:11111111 1111 1010 250 为整型常数为整型常数 32 位:位:00000000 1111 1010 c1(负号负号):1111 1010 扩展扩展负号,结果负号,结果 i 的的真值为真值为-6无符号的字符型数据无符号的字符型数据整型变量整型变量 前面补前面补 0 unsigned char c1=250;int i;i=c1;i 为整型变量为整型变量 32 位:位:000

30、00000 1111 1010 前面前面补补0,结果,结果 i 的的真值为真值为 250250 为整型常数为整型常数 32 位:位:00000000 1111 1010 c1(无符号数无符号数):1111 1010 2.5.2 各种类型运算量混合运算时的自动类型转换各种类型运算量混合运算时的自动类型转换 C 语言的数值型数据语言的数值型数据(常量变量常量变量)包括包括:整型整型int,short int,long int,unsigned int,unsigned short,unsigned long实型实型float,double字符型字符型char,unsigned char各种数据类型

31、,它们的常量和变量之间可以混合各种数据类型,它们的常量和变量之间可以混合运算。两个量运算时,在计算机内部首先将它们运算。两个量运算时,在计算机内部首先将它们转换成相同数据类型的量,然后进行运算。虽然转换成相同数据类型的量,然后进行运算。虽然这种转换是这种转换是C+内部自动完成的,但是若编程者内部自动完成的,但是若编程者知道了转换机理,对掌握及灵活运用知道了转换机理,对掌握及灵活运用C+表达式表达式是有帮助的。转换原则如图是有帮助的。转换原则如图2-3所示:所示:int i;float f;double d;10 +a +i *f -d /iintdoubledoubledoubledouble

32、低类型低类型 高类型高类型低类型:低类型:存储字节少存储字节少 所表示的数据范围小。所表示的数据范围小。高类型:高类型:存储字节多存储字节多 所表示的数据范围大。所表示的数据范围大。double floatlongunsignedint char,short转换原则转换原则例:例:2.5.3 强制类型转换强制类型转换形式形式:类型名类型名(表达式表达式)或或:(类型名类型名)表达式表达式例例:int i,a;float x,y;double z;a=(int)(x+y);或或 a=int(x+y);z=(double)a;或或 z=double(a);a=(int)z%i;或或 a=int(z

33、)%i;表达式的运算结果为表达式的运算结果为 double 型,型,但但:a 仍然为仍然为 int 型变量。型变量。注意注意:1.强制转换的对象:表达式。强制转换的对象:表达式。2.强制转换并不将变量本身类型转变。强制转换并不将变量本身类型转变。小结:小结:类型转换有两种:类型转换有两种:(1)自动转换(赋值时,混合运算时)自动转换(赋值时,混合运算时)(2)强制转换)强制转换课堂练习:课堂练习:求下面算术表达式的值:求下面算术表达式的值:(1)已知)已知 x=2.5,a=7,y=4.7 求求 x+a%3*(int)(x+y)%2/4 的的值值(2)已知)已知 a=2,b=3,x=3.5,y=2.5 求求 float(a+b)/2+int(x)%int(y)的的值值2.53.5第第 2 章章 结束结束

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com