上泽克通大¥ 第2讲 C++语言的基本数据类型 与表达式 SHAN 1/48 上一讲回顾: 口计算机的组成与软件系统 口程序设计语言简介 口C++语言及其基本构成 口isual C+集成开发环境 口三个程序上机练习:输出、简单计算、输入 图上活1大坐 2/48
1 1/48 第 2 讲 C++语言的基本数据类型 与表达式 2/48 上一讲回顾: p计算机的组成与软件系统 p程序设计语言简介 pC++语言及其基本构成 pVisual C++集成开发环境 p三个程序上机练习:输出、简单计算、输入
上游克通大学 1.数据类型 2.常量 3.变量 4.算术运算符和表达式 5.赋值运算符和表达式 6.关系运算符和表达式 3/48 数据类型 ◆取值范围 ◆精度要求 ◆计算方式 口信号通断: 0/1 取反/并/串 口人的年龄: 0100 1 +/-/X/÷ 口环境温度: -40.0∞50.0 0.1 +/-/X/÷ 数据是对象某一特征的量化表示,分类处理可以节约存储空间、 确定对应操作方式、提高处理效率。。。。。 图上清我1大些 4/48 2
2 3/48 1. 数据类型 2. 常量 3. 变量 4. 算术运算符和表达式 5. 赋值运算符和表达式 6. 关系运算符和表达式 4/48 数据类型 p信号通断: 0/1 / 取反/并/串 p人的年龄: 0~100 1 +/-/×/÷ p环境温度: -40.0 ~ 50.0 0.1 +/-/×/÷ u取值范围 u精度要求 u计算方式 数据是对象某一特征的量化表示,分类处理可以节约存储空间、 确定对应操作方式、提高处理效率
数据在计算机里的存储 符号位 位(bit) 信号通 0 00 0000 →-个字节(te) 包含8位 信号断 0 0 0 0 0 0 7岁 →占用两个字节 79岁 0 →占用四个字节 不同类型 0 占用不同 二进制/什 大小空间 进制转换? 天天 48 数据类型的分类 数据类型 基本类型整型 短整型(short int) 整型(i诚) ·只含有单一数据值,没有 长整型1ogi试) 内部结构 字符型(cr) 浮点型 单精度型(f1oat) 双精度型(double) 长双精度型Qo回g山le) 布尔型(boo) 构造类型指针类型() 枚举类型(e 数组类型([D 结构体类型(struct) 共用体类型(cia) 类类型〔class) 空类型(void山 倒上汗无1人修布尔型就是逻辑型,空类型就是无值型 6/48 3
3 5/48 0 1 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 1 1 1 数据在计算机里的存储 0 0 0 0 0 0 0 1 一个字节(byte) 包含8 信号通 信号断 位(bit) 0 0 0 0 0 0 0 0 符号位 79岁 0 0 0 0 0 0 0 0 占用两个字节 占用四个字节 79岁 不同类型 占用不同 大小空间 二进制/十 进制转换? 6/48 数据类型的分类 数据类型 基本类型 整型 短整型(short int) 整型(int) 长整型(long int) 字符型(char) 浮点型 单精度型(float) 双精度型(double) 长双精度型(long double) 布尔型(bool) 构造类型 指针类型(*) 枚举类型(enum) 数组类型([ ]) 结构体类型(struct) 共用体类型(union) 类类型(class) 空类型(void) 布尔型就是逻辑型,空类型就是无值型 。 •只含有单一数据值,没有 内部结构
不同数据类型的取值范围 类型名 说明 字节 取值范围 bool 布尔型 true.false 不同字节的 char 有符号字符型 128-+127 取值范围? unsigned char 无符号字符型 1 0-25 shortint 有符号短整型 32768-32767 unsigned short int 无符号短整型 2 065535 int 有符号整型 -2147483648-+2147483647 unsigned int 无符号整型 4 0-429967295 longint 长整型 2147483648+2147483647 unsigned long int 无符号长整型 0~4294967275 foat 浮点型 34X10334X10等 double 双浮点型 17X10a一17X10m long double 长双浮点型 17X10宽1,1X10减 图上活美1大坐 7/48 基本类型 整型/字符型 类型修饰符:signed、.unsigned ▣整型(it,4字节),取值范围-烈4783C8~A4783G7; 口字符型数据作为整型数据在内存中存储的。 计算机是ASCI码“美国信息交换标准代码”值代表对于 字符,用一个字节的容量(8位)存储一个字符。 口可以加修饰符signed(表示“有符号”)或igned(表示 “无符号”)。 例如:字符A的ASCII码值为65,在内存中表示为: 见附录A 01000001 图上活文1大李 8/48 4
4 7/48 不同数据类型的取值范围 不同字节的 取值范围? 8 8/48 基本类型——整型/字符型 类型修饰符:signed、unsigned p整型(int,4字节),取值范围-2147483648~ 2147483647; p字符型数据作为整型数据在内存中存储的。 计算机是ASCII码“美国信息交换标准代码”值代表对于 字符,用一个字节的容量(8位)存储一个字符。 p 可以加修饰符signed(表示“有符号”)或unsigned(表示 “无符号”)。 例如:字符A的ASCII码值为65,在内存中表示为: 0 1 0 0 0 0 0 1 见附录A
基本类型 整型/字符型 例1字符型常量输出 #include using namespace std; void main(void) char a,b; a=A;1/输入字符,必须加” 输出: b=65;/输入ASCI码值 a=A cout<<“a=”<<a<<n'; b=A cout<<"b="<<b<<'In'; 以下的赋值形式均是等同的。 grade='A': grade=65;grade=0101; 图上活我1大坐 9/48 基本类型一 浮点型数据 浮点数也称为实数,用于表示小数;有两种表示形式: 一 十进制形式:×xxxx.×x×× 指数形式:X×.xexx N=SXRJ S称为尾数,尾数决定有效数字,即数字的精度。 J表示指数。 R是基数,可取2,4,8,16等 2128=34x1038 23 符号位 尾敬部分 指数位 口单精度浮点数(f1loat),四个字节,7位有效数字。例如1234.567。 口双精度浮点数(double),四个字节,15位有效数。 周上开文大华 10/48 5
5 9/48 以下的赋值形式均是等同的。 grade='A'; grade=65 ; grade=0101; 例1 字符型常量输出 #include using namespace std; void main(void) { char a,b; a=‘A’; //输入字符,必须加‘’ b=65; //输入ASCII码值 cout<<“a=”<<a<<‘\n’ ; cout<<"b="<<b<<‘\n’; } 输出: a=A b=A 基本类型——整型/字符型 10/48 基本类型——浮点型数据 浮点数也称为实数,用于表示小数;有两种表示形式: ― 十进制形式:xxxxx.xxxx ― 指数形式:xx.xexx p单精度浮点数(float) ,四个字节,7位有效数字。例如1234.567。 p双精度浮点数(double),四个字节, 15位有效数。 N=S×RJ S 称为尾数,尾数决定有效数字,即数字的精度。 J 表示指数。 R 是基数,可取2,4,8,16等
思考和应用? 管道内水流速度场模拟,请考虑 压强、速度、流量、采样点、流 速是否达标标志,应该分别归为 哪一类数据类型? float P:l压强 float V;/速度 float Q:/流量 int num sample;/采样点编号 bool flag;∥ture采样点速度达到设定速度; false采样点速度未达到设定速度 图上活我1大坐 11/48 上游克道大睾 BANCIA BO CHU UNEDLIT D06 1.数据类型 2.常量 3.变量 4.算术运算符和表达式 5.赋值运算符和表达式 6.关系运算符和表达式 12/48 6
6 11/48 思考和应用? 管道内水流速度场模拟,请考虑 压强、速度、流量、采样点、流 速是否达标标志,应该分别归为 哪一类数据类型? float P;//压强 float V;//速度 float Q;//流量 int num_sample;//采样点编号 bool flag;// ture 采样点速度达到设定速度; false 采样点 速度未达到设定速度 12/48 1. 数据类型 2. 常量 3. 变量 4. 算术运算符和表达式 5. 赋值运算符和表达式 6. 关系运算符和表达式
数值型常量 常量:在程序运行过程中,其值一直保持不变的量为常量。 ◆数值型常量(即常数) ◆字符型常量 口整型常量:常量无sie型 口实型常量 十进制小数形式:0.0,-2.68,32767.,-.35,… 指数形式(浮点形式):0.0e0,-6.226e-4,1.267e20,… 314.159,314.159e0, ,314159 3 31.4159e1, 3.14159e2 内存存储 0.314159e3 数符 数字部分 指数部分 图上活美1大坐 13/48 字符型常量 口用单引号括起来的单个字符,区分大小写,‘’是定界符。 如:,公,1, 口常见的4ASCⅡ字符有128个 √10个阿拉伯数字 √52个英文字母 √32控制字符(非显示字符) 见附录A √34个特殊字符 口转义字符常量 √以“八”开头的字符序列,在屏幕上是不能显示: √只代表一个字符。编译系统在见到字符“\”时,会找它后面 的字符,处理成一个字符,在内存中只占一个字节。 图上汗文1大坐 14/48
7 13/48 p 整型常量:常量无unsigned型 p 实型常量 十进制小数形式:0.0, -2.68,32767., -.35,… 指数形式(浮点形式):0.0e0, -6.226e-4, 1.267e20, … 数值型常量 常量:在程序运行过程中,其值一直保持不变的量为常量。 u数值型常量(即常数) u字符型常量 314.159,314.159e0, 31.4159e1,3.14159e2, 0.314159e3 内存存储 14/48 字符型常量 p 用单引号括起来的单个字符,区分大小写,‘ ’是定界符。 如:‘a’, ‘A’, ‘1’, ‘ ’, ‘+’ p 常见的ASCII字符有128个 ü 10个阿拉伯数字 ü 52个英文字母 ü 32控制字符(非显示字符) ü 34个特殊字符 p 转义字符常量 ü 以 “\”开头的字符序列,在屏幕上是不能显示; ü 只代表一个字符。编译系统在见到字符“\”时,会找它后面 的字符,处理成一个字符,在内存中只占一个字节。 见附录A
转义字符常量 转义字符含 义 ASCII代码 la 响铃 7 n 换行,将当前位置移到下一行开头 10 t 水平制表(跳到下一个tab位置) 9 b 退格,将当前位置移到前一列 8 回车,将当前位置移到本行开头 13 F 换页,将当前位置移到下页开头 12 Wv 竖向跳格 8 1 反斜杠字符“八” 92 P 单引号(撇号)字符 39 双引号字符 34 0 空字符 0 \ddd 1到3位8进制数所代表的字符 hh 1到2位16进制数所代表的字符 图上活我1大坐 15/48 字符型常量 例2字符赋给整型变量。 #include using namespace std; int main() (int ij; i和j是整型变量 i='a'; /将一个字符常量赋给整型变量i j=b'; /心将一个字符常量赋给整型变量j cout<iK<'<j<n';输出整型变量和j的值,n'是换行符 return 0; el 例如: 执行时输出 cl='a' 数据存储 (a) 9798 c2 c2=b' 011G001 01100010 (b) 图上弄我大些 16/48 8
8 15/48 转义字符 含 义 ASCII代码 \a 响铃 7 \n 换行,将当前位置移到下一行开头 10 \t 水平制表(跳到下一个tab位置) 9 \b 退格,将当前位置移到前一列 8 \r 回车,将当前位置移到本行开头 13 \f 换页,将当前位置移到下页开头 12 \v 竖向跳格 8 \\ 反斜杠字符“\” 92 \’ 单引号(撇号)字符 39 \” 双引号字符 34 \0 空字符 0 \ddd 1到3位8进制数所代表的字符 \xhh 1到2位16进制数所代表的字符 转义字符常量 16/48 例2 字符赋给整型变量。 #include using namespace std; int main( ) { int i,j; //i和j是整型变量 i=′a′; //将一个字符常量赋给整型变量i j=′b′; //将一个字符常量赋给整型变量j cout<<i<<′ ′<<j<<′\n′; //输出整型变量i和j的值,′\n′ 是换行符 return 0; } 执行时输出 97 98 字符型常量
字符型常量 例3字符数据与整数进行算术运算。 #include using namespace std; int main() char c1,c2; cl='a'; c2=b'; c1=c1-32; c2=c2-32; cout<<el<<''<<e2<<\n'; return 0; } 执行时输出 AB 图上活我1大坐 17/48 字符串常量 口由一对双引号括起来的字符序列 √“abc” 、 “12.34” √“a” /注意与‘a'的区别 √“This is a string.\n”//转义字符按一个字符计算 'a'在内存中占一个字节 "a"占两个字节 01100001 01100001 00000000 如:"CHINA" C 图上活1大坐 18/48 9
9 17/48 例3 字符数据与整数进行算术运算。 #include using namespace std; int main( ) { char c1,c2; c1=′a′; c2=′b′; c1=c1-32; c2=c2-32; cout<<c1<<′ ′<<c2<<′\n′; return 0; } 执行时输出 A B 字符型常量 18/48 字符串常量 p 由一对双引号括起来的字符序列 ü “abc” 、 “12.34” ü “a” //注意与‘a’的区别 ü “This is a string.\n” //转义字符按一个字符计算 'a'在内存中占一个字节 "a"占两个字节 01100001 01100001 00000000 如:"CHINA" C H I N A \0
符号常量 口用一个符号名代表一个常量,称为符号常量 口符号常量必须先定义,同时进行初始化 口符号常量的值在其作用域内不能改变,也不能再被赋值 口符号常量名习惯用大写字母表示 如: #define Pl 3.14159 图上活美1大坐 19/48 符号常量 例4:符号常量 #include using namespace std; #define PRICE 30 注意这不是语句,末尾不要加分号 int main ( {int num,total; um=10; total=num PRICE: cout<<"total="<<total<<n': 1、让代码更简洁明了 2、方便代码维护 return 0: 图上开文1大华 20/48 10
10 19/48 符号常量 p 用一个符号名代表一个常量,称为符号常量 p 符号常量必须先定义,同时进行初始化 p 符号常量的值在其作用域内不能改变,也不能再被赋值 p 符号常量名习惯用大写字母表示 如: #define PI 3.14159 20/48 符号常量 #include using namespace std; #define PRICE 30 //注意这不是语句,末尾不要加分号 int main ( ) { int num,total; num=10; total=num * PRICE; cout<<″total=″<<total<<′\n′; return 0; } 1、让代码更简洁明了 2、方便代码维护 例4:符号常量