11:17:57 第二章C+语言初步 本章主要内容 1.C+语言的字符集、词汇 2.基本数据类型、运算符与表达式 3.C++中的常量与变量 4.C++中的I/0 5.基本控制结构 6.数组、结构体、共用体与枚举类型 7.指针、引用与动态内存分配 8.函数与函数重载
11:17:57 1 第二章 C++语言初步 本章主要内容 1.C++语言的字符集、词汇 2.基本数据类型、运算符与表达式 3.C++中的常量与变量 4.C++中的I/O 5.基本控制结构 6.数组、结构体、共用体与枚举类型 7.指针、引用与动态内存分配 8.函数与函数重载
§1C++语言的字符集与词汇 1.字符集 (1)字母 A BCd a bcd Z (2)数字 0123456789 (3)特殊符号 空格!#$%& *十 @[\
11:17:57 2 §1 C++语言的字符集与词汇 1.字符集 (1)字母 A B C D … Z a b c d … z (2)数字 0 1 2 3 4 5 6 7 8 9 (3)特殊符号 空格 ! # $ % & . ' " ( ) * + ,- ? / : ; @ [ \ ] ^ _ { | } ~
11:17:57 2.词汇:五类 (1)关键字(保留字):系统预定义且有专门含义的单词,不允 许另作它用 C++的关键字包含了C语言的几乎所有关键字 C++的关键字随C++的发展而不断增加 (2)标识符:由程序员为程序中的各种成份定义的名字 以字母或-开头,由字母、-、数字组成 不能是关键字 C++中的标识符区分大小写 见名知义的原则 C++系统对标识符的长度有一定限制 (3)直接常量 (4)运算符 (5)分隔符:用来分隔不同的语法成份的单词 空格"′;{}#()/**// *C十的两种注释: * //注释到行尾
11:17:57 3 2.词汇:五类 (1)关键字(保留字):系统预定义且有专门含义的单词,不允 许另作它用 .C++的关键字包含了C语言的几乎所有关键字 .C++的关键字随C++的发展而不断增加 (2)标识符:由程序员为程序中的各种成份定义的名字 .以字母或_开头,由字母、_、数字组成 .不能是关键字 .C++中的标识符区分大小写 .见名知义的原则 .C++系统对标识符的长度有一定限制 (3)直接常量 (4)运算符 (5)分隔符:用来分隔不同的语法成份的单词 空格 " ' ; { }# ( ) /* */ // **C++的两种注释: ./*…*/ .// 注释到行尾
11:17:57 §2基本数据类型、运算符与表达式 数据类型 每一项数据都唯一的属于某种类型 每一数据类型都有一个明确定义的值的集合 每一类型的数据占用相同大小的存储空间 同一类型的数据可以进行相同类型的运算 C++的数据类型 整型 int 浮点型 float 基本类型字符型char 简单类型 空类型void 布尔型boo 用户定义类型enum 数组 数据类型 复合米和结构体 struct 基本类型是由系统定义 共用体 union 各种语言都具备的类型 类 class复合类型与指针类型都 指针类型 属于用户定义类型
11:17:57 4 §2 基本数据类型、运算符与表达式 一.数据类型 – 每一项数据都唯一的属于某种类型 – 每一数据类型都有一个明确定义的值的集合 – 每一类型的数据占用相同大小的存储空间 – 同一类型的数据可以进行相同类型的运算 数据类型 简单类型 复合类型 指针类型 * 用户定义类型 enum 基本类型 整型 int 浮点型 float 字符型 char 空类型 void 布尔型 bool 数组 [ ] 结构体 struct 共用体 union 类 class 1.C++的数据类型 基本类型是由系统定义, 各种语言都具备的类型 复合类型与指针类型都 属于用户定义类型
11:17:57 2.基本类型 int型:整型YVC中占4字节 float型:浮点型 4字节 char型:字符型 1字节 void型:空类型 bo01型:布尔型 1字节值为true或 false *修饰说明符 10ng与 shor t、 signed与 uns igned 10ng和 short修改整型具有的最大值和最小值 signed和 unsigned告诉编译器如何处理整型和字符型数 据的最高位 float型可用 double和 long double修饰,修改实型数据 的表数范围和精度
11:17:57 5 2.基本类型 – int型:整型 VC中占4字节 – float型: 浮点型 4字节 – char型: 字符型 1字节 – void型: 空类型 – bool型: 布尔型 1字节 值为 true 或 false **修饰说明符 long与short、signed与unsigned –long和short修改整型具有的最大值和最小值 –signed和unsigned告诉编译器如何处理整型和字符型数 据的最高位 – float型可用double和long double修饰,修改实型数据 的表数范围和精度
11:17:57 C++中的全部基本类型 类型名字节数 取值范围 bool true、 false char [signed] char 1111 128-127 -128--127 unsigned char 0-255 int 4 231-231-1 Signed] int 231-1 unsigned [int] 0-232-1 [signed] short [int] 2-32768--32767 unsigned short [int] 20-216-1 [signed] long [int] 4 -231--231-1 unsigned long [int] 0--232-1 floa t 4-3.4E(+/)38--3.4B(+/)38 double [float 1.7E(+/-)308-1.7E(+/-)308 1 ong double [f loat]10-3.4B(+/-)4932-34(+/)4932
11:17:57 6 类型名 字节数 取值范围 bool 1 true、false char 1 -128 -- 127 [signed] char 1 -128 -- 127 unsigned char 1 0 -- 255 int 4 -2 31 -- 2 31-1 [signed] int 4 -2 31 -- 2 31-1 unsigned [int] 4 0 -- 2 32-1 [signed] short [int] 2 -32768 -- 32767 unsigned short [int] 2 0 -- 2 16-1 [signed] long [int] 4 -2 31 -- 2 31-1 unsigned long [int] 4 0 -- 2 32-1 float 4 -3.4E(+/-)38 -- 3.4E(+/-)38 double [float] 8 -1.7E(+/-)308 -- 1.7E(+/-)308 long double [float] 10 -3.4E(+/-)4932 -- 3.4E(+/-)4932 C++中的全部基本类型
11:17:57 二.运算符与表达式 1.运算符 算术运算符:+一*/% 关系运算符:>>== 赋值运算符:=+=一=*=/=%==&= 条件运算符:? 逗号运算符 指针运算符:&* 求字节运算符: sizeof 函数调用运算符、强制类型转换运算符:() 分量运算符: 数组下标运算符:[] 作用范围分解运算符::: 动态内存分配符:new、 delete 插入提取运算符:
11:17:57 7 二.运算符与表达式 1.运算符 – 算术运算符:+ - * / % ++ -- – 关系运算符:> >= == > – 赋值运算符:= += -= *= /= %= >= &= |= ^= – 条件运算符: ?: – 逗号运算符: , – 指针运算符:& * – 求字节运算符:sizeof – 函数调用运算符、强制类型转换运算符:() – 分量运算符: . -> – 数组下标运算符:[] – 作用范围分解运算符::: – 动态内存分配符:new、delete – 插入提取运算符:>
11:17:57 运算符的优先级与结合性 运算符 含义 要求操作对象数目结合性 括号 作用范围分解(限定)运算 符数组下标运算符 左→>右 成员运算符 +一 自增自减 & 取地址 指针引用 逻辑非 按位取反 右→>左 正负号 强制类型转换 sizeof求字节 new delete动态分配释放内存 /%乘法除法求余 左→>右 加法减法
11:17:57 8 –运算符的优先级与结合性 运算符 含义 要求操作对象数目 结合性 () :: [ ] . -> 括号 作用范围分解(限定)运算 符数组下标运算符 成员运算符 左->右 ++ -- & * ! ~ + - ( ) sizeof new delete 自增 自减 取地址 指针引用 逻辑非 按位取反 正 负号 强制类型转换 求字节 动态分配 释放内存 1 右->左 * / % 乘法 除法 求余 2 左->右 + - 加法 减法 2
11:17:57 运算符的优先级与结合性(续表) 运算符 含义 要求操作对象数目结合性 > 左移右移运算符 >= 大于大于等于 =〓 等于不等于 & 按位与 左→>右 按位异或 按位或 && 逻辑与 逻辑或 ? 条件运算符 右→>左 赋值运算符 +=一*/=%=扩展的赋值运算符 右→>左 >=&=^= 逗号运算符 左→>右
11:17:57 9 –运算符的优先级与结合性(续表) 运算符 含义 要求操作对象数目 结合性 > 左移 右移运算符 2 左->右 >= 小于 小于等于 大于 大于等于 == != 等于 不等于 & ^ | 按位与 按位异或 按位或 && 逻辑与 || 逻辑或 ?: 条件运算符 3 右->左 = += -= *= /= %= >= &= ^= |= 赋值运算符 扩展的赋值运算符 2 右->左 , 逗号运算符 2 左->右
11:17:57 C+中的类型转换 转换运算符:( 两种强制类型转换的方法: (目标类型名)表达式: float x=2. 5; int y; y=(int)x, 目标类型名(表达式) float x=2. 5; int y; y=int(x) C++中的显式转换 static-cast 以不用强制类型转换但一定会发生转换的地方(为 了更清楚、理醒目而使用) const-cast const和 volatile进行转换 reinterpret-cast 转换为完全不同的意思,必须转换回原来的类型才 能安全的使用,最为危险 dynamic-cast把基类对象(指针转换为派生类对象(指针)时使用 使用方式 转换用关键字(待转换的表达式
11:17:5710 –C++中的类型转换 –转换运算符:() 两种强制类型转换的方法: • (目标类型名)表达式: float x=2.5; int y; y=(int)x; • 目标类型名(表达式): float x=2.5; int y; y=int(x); –C++中的显式转换 static_cast 可以不用强制类型转换但一定会发生转换的地方(为 了更清楚、理醒目而使用) const_cast 对const和volatile进行转换 reinterpret_cast 转换为完全不同的意思,必须转换回原来的类型才 能安全的使用,最为危险 dynamic_cast 把基类对象(指针)转换为派生类对象(指针)时使用 –使用方式 转换用关键字(待转换的表达式)