《《C++面向对象程序设计》-曹静-电子教案 第02章 C++语言基础》由会员分享,可在线阅读,更多相关《《C++面向对象程序设计》-曹静-电子教案 第02章 C++语言基础(145页珍藏版)》请在金锄头文库上搜索。
1、2019年5月25日星期六,C+面向对象程序设计,第2章 C+语言基础,2.1 数据类型和基本输入输出 2.2 运算符和表达式 2.3 基本控制结构 2.4 函数 2.5 构造类型 2.6 指针 项目设计1 控制台程序的人机界面设计,2019年5月25日星期六,C+面向对象程序设计,2.1 数据类型和基本输入输出,2.1.1 基本数据类型 2.1.2 常量 2.1.3 变量 2.1.4 基本输入、输出,2019年5月25日星期六,C+面向对象程序设计,2.1.1 基本数据类型,基本数据类型是C+系统的内部数据类型,包括bool(布尔型)、int(整型)、char(字符型)、float(单精度浮
2、点型)、double(双精度浮点型)以及基本数据类型中short(短型)和long(长型)、signed(有符号)和unsigned(无符号)之分。 +的数据类型如下图所示:,2019年5月25日星期六,C+面向对象程序设计,2.1.1 基本数据类型,2019年5月25日星期六,C+面向对象程序设计,2.1.1 基本数据类型,使用基本数据类型要注意两点: 无符号(unsigned)和有符号(signed)的区别在于数值最高位的含义。 int型在16位系统中和在32位系统中,所占用字节数是不一样的。,2019年5月25日星期六,C+面向对象程序设计,2.1.2 常量,所谓常量是指在程序运行的整个
3、过程中其值始终不可改变的量,也就是直接使用符号(文字)表示的值。 例如10,-6,2.3,-5.7,A,b都是常量。 整型常量 整型常量就是整型常数。整型常量可以用以下三种形式表示: 十进制整数:十进制整数没有前缀。例如:237、-568、65535、1627,2019年5月25日星期六,C+面向对象程序设计,2.1.2 常量,八进制整数:八进制整数要以数字0开头,即以0作为八进制数的前缀。例如:015(十进制为13)、0101(十进制为65)、0177777(十进制为65535) 十六进制整常数:十六进制整数要以数字0x或0X开头,即以0x作为十六进制数的前缀。例如:0X2A(十进制为42)
4、、0XA0 (十进制为160)、0XFFFF(十进制为65535) 实型常量 实型常量也称为实数或者浮点数。实数只采用十进制,它有二种形式:小数形式和指数形式。,2019年5月25日星期六,C+面向对象程序设计,2.1.2 常量,十进制数的形式:由数码09和小数点组成。例如:0.0、25.0、5.789、0.13、300.、-267.8230等均为合法的实数。注意,实型常量中必须含有小数点。 指数形式:由十进制数,加阶码标志“e”或“E”以及阶码(只能为整数,可以带符号)组成。例如:2.1E5 (等于2.1105)、3.7E-2 (等于3.710-2)、-2.8E-2 (等于-2.810-2)
5、 实型常量默认都按双精度double型处理。但可以添加后缀“f”或“F”即表示该数为单精度浮点数。,2019年5月25日星期六,C+面向对象程序设计,2.1.2 常量,字符常量 字符常量是用单引号括起来的一个字符。例如:a、b、=、+、?。有以下特点: 字符常量只能用单引号括起来,不能用双引号或其它括号。 字符常量只能是单个字符,不能是字符串。 字符可以是字符集中任意字符。但数字被定义为字符型其含义就发生了变化。如5 和5 是不同的。,2019年5月25日星期六,C+面向对象程序设计,2.1.2 常量,转义字符是一种特殊的字符常量。转义字符以反斜线“”开头,后跟一个或几个字符。转义字符具有特定
6、的含义,不同于字符原有的意义,故称“转义”字符。例如,“n”就是一个转义字符,其意义是“回车换行”。转义字符主要用来表示那些用一般字符不便于表示的控制代码。广义地讲,字符集中的任何一个字符均可用转义字符来表示。 字符串常量,2019年5月25日星期六,C+面向对象程序设计,2.1.2 常量,字符串常量是由一对双引号括起的字符序列。例如: “CHINA” , “C program” , “$12.5” 等都是合法的字符串常量。字符串常量和字符常量是不同的量。它们之间主要有以下区别 字符常量由单引号括起来,字符串常量由双引号括起来 字符常量只能是单个字符,字符串常量则可以含一个或多个字符 字符常量
7、占一个字节的内存空间。字符串常量占的内存字节数等于字符串中字节数加1。增加的一个字节中存放字符“0” (ASCII码为0)。这是字符串结束的标志。,2019年5月25日星期六,C+面向对象程序设计,2.1.2 常量,布尔常量 布尔型常量只有两个:true(真)和false(假)。 符号常量 除了前面讲过的直接用文字表示常量外,也可以为常量命名,这种代替常量本身的标识符称为符号常量。C+中用const定义符号常量。符号常量在使用之前一定要首先声明,常量声明语句的形式为: const 数据类型说明符 常量名 = 常量值;,2019年5月25日星期六,C+面向对象程序设计,2.1.2 常量,符号常量
8、在声明时一定要赋初值,而在程序中间不能改变其值。,2019年5月25日星期六,C+面向对象程序设计,2.1.3 变量,在程序的执行过程中其值可以变化的量称为变量,变量是需要用名字来标识的。 变量的定义 就像常量具有各种类型一样,变量也具有相应的类型。变量在使用之前需要首先声明其类型和名称。变量名应是合法的标识符。变量声明语句的形式如下: ;,2019年5月25日星期六,C+面向对象程序设计,2.1.3 变量,变量的初始化 在声明一个变量的同时,也可以给它赋以初值,而这实质上就是给对应的内存单元赋值,这一过程称为初始化。 例如:int a = 3, b = 5; / 指定a,b为整型变量,a的初
9、值为3,b的初/ 值为5 C+中变量的初始化还有另一种形式,例如:int a(3) , b(5); 需要注意的是,一个未初始化的变量不是没有数值,而是取决于变量所在系统中的存储形式,它可能是系统的默认值或无效值。,2019年5月25日星期六,C+面向对象程序设计,2.1.4 基本输入、输出,C+中使用标准输入流cin和标准输出流cout来实现数据的输入与输出。 输出流(cout) 通过cout可以输出一个整数、实数、字符及字符串,cout中的插入符“”可以连续写多个,每个后面可以跟一个表达式,该表达式通常是获得输入值的变量或对象。,2019年5月25日星期六,C+面向对象程序设计,2.2 运算
10、符和表达式,2.2.1 算术运算符和算术表达式 2.2.2 赋值运算符和赋值表达式 2.2.3 逗号运算符和逗号表达式 2.2.4 关系运算符和关系表达式 2.2.5 逻辑运算符和逻辑表达式 2.2.6 、与sizeof运算符 2.2.7 位运算符 2.2.8 三目运算符,2019年5月25日星期六,C+面向对象程序设计,2.2 运算符和表达式,2.2.9 运算符的优先顺序 2.2.10 运算式中的类型转换,2019年5月25日星期六,C+面向对象程序设计,2.2.1 算术运算符和算术表达式,C+中由算术运算符、操作数和括号构成的表达式称为算术表达式。 C+中基本算术运算符有:+(加法),(减
11、法或负号),*(乘法),/(除法),%(求余)。 这些算术运算符和数学运算的概念及运算方法是一致的,但有几点需要说明: “”减法运算,即是双目运算符又是单目运算符,作单目运算符时,是求负运算,例如:-5,-x等。,2019年5月25日星期六,C+面向对象程序设计,2.2.1 算术运算符和算术表达式,“/”除法运算,当参与相除运算的两个操作数均为整型时,其结果也为整型,取商的整数部分,舍去小数,因此表达式1/2的结果为0。 如果两个操作数中有一个是实型,则结果为双精度实型。 “%”求余运算,要求参与运算的操作数均为整型。例如:表达式a%b, 其值等于两数相除后的余数,即a被b除的余数,符号与a相
12、同。 优先级和结合性。在一个包含多种算术运算的混合运算中,先乘除、后加减的运算规则是由运算符的优先级来保证的;在算术运算符中,除单目运算符外,其余运算符的结合性都是自左向右。,2019年5月25日星期六,C+面向对象程序设计,2.2.2 赋值运算符和赋值表达式,C+中赋值运算符“=”是一个双目运算符,运算的结合性为自右向左。 带有赋值运算符的表达式被称为赋值表达式,其作用就是将赋值符右边表达式的值赋给左边的操作数。 例如,x=a+b就是一个赋值表达式。 在赋值符“=”之前加上其它双目运算符可构成复合赋值符。 C+提供了10种复合赋值运算符:+=, =,*=,/=,%=,=,&=,= ,| =。
13、 例如:a+=5 等价于a=a+5,2019年5月25日星期六,C+面向对象程序设计,2.2.3 逗号运算符和逗号表达式,在语言中逗号“,”也是一种运算符,称为逗号运算符。 逗号运算符是优先级最低的运算符。 其形式为:表达式1,表达式2,表达式n 在计算时,C+将自左向右逐个计算每个表达式,最终整个表达式的结果是最后计算的那个表达式的类型和值。 例如:j=(i=12,i+8) / 表达式值为20,2019年5月25日星期六,C+面向对象程序设计,2.2.4 关系运算符和关系表达式,比较两个量的运算符称为关系运算符。 关系运算符将两个数据进行比较,判定两个数据是否符合给定的关系。 例如,“x y
14、”中的“”表示一个大于关系运算。 C+提供了6种关系运算符:(大于),=(大于等于),= =(等于),!=(不等于)。,2019年5月25日星期六,C+面向对象程序设计,2.2.4 关系运算符和关系表达式,有几点需要注意 “等于”关系运算符是两个等号“= =”,而不是一个等号“=”(赋值运算符)。 在6个关系运算符中,前4个优先级相同,后2个也相同,且前4个高于后2个。 关系运算符的优先级,低于算术运算符,但高于赋值运算符。 用关系运算符将两个表达式连接起来,进行关系运算的式子就是关系表达式。,2019年5月25日星期六,C+面向对象程序设计,2.2.4 关系运算符和关系表达式,关系表达式的值
15、为逻辑值即“真”或“假”。在C+编译系统中,往往将“真”表示为“true”或1,将“假”表示为“false”或0。而任何不为0的数被认为是“真”,0被认为是“假”。 例如设x1=1,x2=2,x3=3 ,则: (x1x2)!=x3 / 表达式为1。,2019年5月25日星期六,C+面向对象程序设计,2.2.5 逻辑运算符和逻辑表达式,逻辑运算符用于将多个关系表达式或逻辑量(“真”或“假”)组成一个逻辑表达式。 C+提供了下列三种逻辑运算符: & 逻辑与 | 逻辑或 ! 逻辑非 例如,下面的表达式都是逻辑表达式: (x=1&(x5),! (x= =0),2019年5月25日星期六,C+面向对象程
16、序设计,2.2.5 逻辑运算符和逻辑表达式,逻辑运算符的运算规则如下: & :双目运算符,当且仅当两个操作数的值都为“真”时,运算结果为“真”,否则为“假”。等价于“同时”的含义。 | :双目运算符,当且仅当两个操作数的值都为“假”时,运算结果为“假”,否则为“真”。 等价于“或者”的含义。 ! :单目运算符,当操作数的值为“真”时,运算结果为“假”;当操作数的值为“假”时,运算结果为“真”。等价于“否定”的含义。 例如,设x=5,则(x=0) & (x5)的值为“假”。,2019年5月25日星期六,C+面向对象程序设计,2.2.5 逻辑运算符和逻辑表达式,逻辑运算符的优先级如下: 逻辑非的优先级最高,逻辑与次之,逻辑或最低,即: !(非) &(与) |(或) 与其它种类运算符的优先关系: ! 算术运算 关系运算 & | 赋值