第02章 数据类型、运算符和表达式

上传人:夏** 文档编号:569324178 上传时间:2024-07-28 格式:PPT 页数:59 大小:508.50KB
返回 下载 相关 举报
第02章 数据类型、运算符和表达式_第1页
第1页 / 共59页
第02章 数据类型、运算符和表达式_第2页
第2页 / 共59页
第02章 数据类型、运算符和表达式_第3页
第3页 / 共59页
第02章 数据类型、运算符和表达式_第4页
第4页 / 共59页
第02章 数据类型、运算符和表达式_第5页
第5页 / 共59页
点击查看更多>>
资源描述

《第02章 数据类型、运算符和表达式》由会员分享,可在线阅读,更多相关《第02章 数据类型、运算符和表达式(59页珍藏版)》请在金锄头文库上搜索。

1、南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)第第 2 章章 数据类型、运算符与表达式数据类型、运算符与表达式2.1 保留字和标识符保留字和标识符2.2 C+的基本数据类型的基本数据类型2.3 常量和变量常量和变量2.4 基本运算符和表达式基本运算符和表达式2.5 类型转换类型转换南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)简单地说:程序简单地说:程序 = 数据结构数据结构 + 算法算法C+ 程序的构成:程序的构成:(1)数据描述)数据描述(2)执行步骤()执行步骤( 算法)算法)例例1.1一个简单的一个简单的C+程序程序 #include v

2、oid main( void ) int num, square ; cout num ; square = num*num; cout num的的平方平方为为: square n; 下面学习:程序的各种语法元素下面学习:程序的各种语法元素南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.1 保留字和标识符保留字和标识符2.1.1 保留字(保留字(Reserved Word or Keyword) C+语言自身使用的,已有特殊含义和用途的英文语言自身使用的,已有特殊含义和用途的英文单词称为单词称为保留字保留字或或关键字关键字。如例如例1.1中的类型说明符中的类型说明符

3、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; sum = a + b; coutsum is sumn; 保留字保留字标识符标识符

5、(变量名、函数名、对象名)(变量名、函数名、对象名)常数常数南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.2 C+ 的基本数据类型的基本数据类型数据类型数据类型基本类型基本类型导出类型导出类型整型整型实型实型字符型字符型空类型空类型(无值型无值型)单精度型单精度型双精度型双精度型数组类型数组类型指针类型指针类型结构体类型结构体类型共用体类型共用体类型枚举类型枚举类型不论是变量还是常数,在计算机内部都要按照某种不论是变量还是常数,在计算机内部都要按照某种形式存放,存放形式由数据类型决定。形式存放,存放形式由数据类型决定。南京航空航天大学计算机科学与技术学院计算机基础教

6、学部 制作(版权所有)以上基本类型数据以上基本类型数据占内存字节占内存字节不相同,不相同,因此因此数值范围数值范围也也不同,不同,见表见表 2-1 及表及表 2-2类型标识类型标识名称名称占用字节数占用字节数取值范围取值范围char字符型字符型1128 127int 整型整型4231(2311)float实型实型41038 1038double双精度实双精度实型型810308 10308bool逻辑型逻辑型1常量常量true和和falsevoid空类型空类型无值无值南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)对基本类型,可以加修饰,如:对基本类型,可以加修饰,如: i

7、nt 型型int 占占4 字节字节short int 占占 2 字节字节 long int 占占4 字节字节南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)int : signed int unsigned int short int : signed short int unsigned short intlong int: signed long int unsigned long int最简形式:最简形式:intunsigned int shortunsigned shortlongunsigned long 再加修饰,如:再加修饰,如:南京航空航天大学计算机科学与

8、技术学院计算机基础教学部 制作(版权所有)注意注意:int 型变量与型变量与 unsigned int 型变量的区别型变量的区别 32 位位 范围范围 int 型:型: -231 (补码补码) (231 - 1) 符号位符号位 32 位位 范围范围unsigned int 型:型: 0 (232 - 1) 无符号位无符号位南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.3 常量和变量常量和变量2.3.1 常量常量常量常量:在程序运行过程中,其值不能被改变的量:在程序运行过程中,其值不能被改变的量#include void main(void)int a, b, sum

9、; /* 定义变量定义变量 */a=123; b=456; sum = a + b; coutsum is sumn; 常量常量(常数常数)南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)1. 整型常量整型常量 十进制整数十进制整数 123, -456 八进制整数八进制整数 0123, -011 十六进制整数十六进制整数 0x123, -0xAB 长整型与无符号型常数长整型与无符号型常数 12L, 0234L,-0xABL 12U, 0234U,0xABU南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2. 实型常量实型常量(在内存中以浮点形式存放)

10、(在内存中以浮点形式存放) (均为十进制,无数制区分)(均为十进制,无数制区分) 小数形式小数形式 : 必须有小数点必须有小数点 1.65 1. .123 指数形式指数形式 (也称为科学表示法)(也称为科学表示法): 如如 123000.0 可写为可写为 1.23e5 0.00368 可写为可写为 3.68E-3 e 或或 E前必须有数字,前必须有数字,1000写为写为 1e3 不能写为不能写为 e3南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)3. 字符型常量字符型常量用于表示用于表示ASCII字符,见附录字符,见附录A。在内存中在内存中存放对应的存放对应的ASCII

11、码值,如码值,如 a 的的ASCII码为码为 97,则在内存中用一个字节存放:,则在内存中用一个字节存放:在源程序中在源程序中最基本的表示形式为:最基本的表示形式为:单引号括起来的一个字符,如:单引号括起来的一个字符,如: a A ? 0 1 1 0 0 0 0 1对于不可打印的字符,可以用转义字符形式表示对于不可打印的字符,可以用转义字符形式表示 。南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)注意:注意:n 与与 n 的区别的区别 !转义字符:转义字符:以反斜杠以反斜杠“”引导的特殊形式的引导的特殊形式的 非显示字符或表示特定意义的字符常量非显示字符或表示特定意义的

12、字符常量n t b ddd xhh 见表见表 2-3注意:注意:字母字母 A 的的 ASCII 码是码是(65)10=(101)8=(41)16在程序中表示字母在程序中表示字母A,可以有三种方法:可以有三种方法: A 101 x41n 表示表示一个一个控制字符,控制字符, n 表示一个字母。表示一个字母。南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)4. 字符串常量字符串常量-用双引号括起来的字符序列用双引号括起来的字符序列(在内存中存放字符序列的在内存中存放字符序列的ASCII码值,码值, 最后加一个结尾标志)最后加一个结尾标志)如如: How do you do.

13、CHINA a字符串结束标志符是:字符串结束标志符是: 0注意:注意: a 和和 a 是不同的。是不同的。CHINA0.南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)符号常量符号常量:用标识符代表一个常量,:用标识符代表一个常量, 必须先定义后使用。必须先定义后使用。例:定义标识符常量例:定义标识符常量#define PRICE 30#define PI 3.1425926#define S Chinaconst f loat pi=3.142.3.2 符号常量符号常量南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)例例2.1 符号常量的使用符号常

14、量的使用 #include #define PI 3.14159 void main(void) float r, c, a, sa; r = 5.0f; / 给半径赋值给半径赋值 c = 2 * PI * r;/ 计算圆周长计算圆周长 a = PI * r * r; / 计算圆面积计算圆面积 sa = 4 * PI * r * r; / 计算球表面积计算球表面积 coutPI = PIn;/ 字符串中的字符串中的PI是字符串常量的一部分是字符串常量的一部分, 不是独立的符号常量不是独立的符号常量 coutc = cn; couta = an; coutsa = san;好处:好处:(1)提高

15、程序的可读性。)提高程序的可读性。(2)程序中使用多处,一改全改。)程序中使用多处,一改全改。南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.3.3 变量变量变量变量:其值可以改变的量。其值可以改变的量。变量名变量名:一个变量的符号名一个变量的符号名,由由标识符标识符构成。构成。 一个变量占据内存一定的一个变量占据内存一定的存储单元存储单元, 在存储单元中存放该在存储单元中存放该变量的值变量的值。int a, b ; / 定义定义2个整型变量个整型变量a, bunsigned u ; / 定义定义1个无符号整型变量个无符号整型变量ufloat f ; / 定义定义1个

16、单精度实型变量个单精度实型变量double d ; / 定义定义1个双精度实型变量个双精度实型变量char c1, c2, c3 ; / 定义定义3个字符型变量个字符型变量c1, c2, c3 1. 定义变量定义变量南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)注意注意:(1) 区别大小写区别大小写: 如如 sum 与与 Sum 为不同的变量名。为不同的变量名。(2)先定义后使用先定义后使用: 分配单元分配单元 、确定类型、语法检查、确定类型、语法检查(3)在一个程序单元中不能重复定义。在一个程序单元中不能重复定义。(4)关键字(保留字)不能作为标识符。关键字(保留字)

17、不能作为标识符。(5)最大长度随不同的最大长度随不同的 C+语言系统而定语言系统而定: VC+识别前识别前 247 个字符,超过无效。个字符,超过无效。(6)按义取名。按义取名。 南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2变量赋初值变量赋初值给变量赋初值的方法有两种:给变量赋初值的方法有两种:(1)变量定义后,用赋值语句赋初值。)变量定义后,用赋值语句赋初值。例如:例如: int a, b ; a = 12; b = 24 ; char c1,c2 ; c1=A; c2=B ;(2)在定义变量的同时,)在定义变量的同时, 直接赋初值(称为变量的初始化)。直接赋初值

18、(称为变量的初始化)。 例如例如: int a=12, b= -24 ; char c1=A, c2=B ; 南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)3常变量常变量常变量的定义:常变量的定义:const float pi = 3.14;常变量定义时必须初始化。常变量定义时必须初始化。 定义常变量的目的是保护变量的值,定义常变量的目的是保护变量的值,即不允许对变量的值做修改。即不允许对变量的值做修改。南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.4 基本运算符和表达式基本运算符和表达式2.4.1 C+运算符及表达式简介运算符及表达式简介完

19、成对常量、变量作运算的符号称为完成对常量、变量作运算的符号称为运算符运算符。把参与运算的对象称为把参与运算的对象称为操作数操作数。操作数可以是常量和变量等。操作数可以是常量和变量等。各种运算符见表各种运算符见表 2-4一元运算符、二元运算符、三元运算符一元运算符、二元运算符、三元运算符南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.4.2 算术运算符和算术表达式算术运算符和算术表达式基本算术运算符基本算术运算符: + - * / % / 整数运算时为整除,结果为整数。整数运算时为整除,结果为整数。 % (模运算或称模运算或称求余求余运算运算) 必须为整型数据。必须为整

20、型数据。 例例: 7/3 结果?结果? 7.0/3 结果?结果? 7%3 结果?结果?22.3333331南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)由运算符和操作数构成由运算符和操作数构成表达式表达式:如:如:a + b a * ( c + d ) a * c + d2.4.3 运算优先级和结合性运算优先级和结合性优先级优先级: 对于同一表达式中出现多个运算符,先算对于同一表达式中出现多个运算符,先算 哪一个。哪一个。结合性结合性: 在两种运算优先级相同时,在两种运算优先级相同时,“自左向右自左向右”还是还是“自右向左自右向左”运算称为结合性。运算称为结合性。 南京

21、航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)如:如:算术运算符的算术运算符的优先级优先级与与结合性结合性优先级优先级: + - 较低较低* / % 较高较高结合性结合性: 自左向右自左向右例:表达式:例:表达式:6/3*2 “自左向右自左向右” 或或 “自右向左自右向左” 运算结果不运算结果不同同南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.4.4 关系运算符和关系表达式关系运算符和关系表达式“关系运算关系运算”实际上就是实际上就是“比较运算比较运算”关系运算符及其优先次序关系运算符及其优先次序=!=小于小于小于等于小于等于大于大于大于等于大于

22、等于恒等于恒等于不等于不等于优先级相优先级相同同(较高较高)优先级相优先级相同同(较低较低)南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)关系运算符及其关系运算符及其优先级优先级说明说明a=bc 等效于等效于 a=(ba+b 等效于等效于 c(a+b) 算术算术关系(关系( , 和和 = )关系(关系( = 和和 != ) 高高 低低南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)关系表达式关系表达式1. 用关系运算符连接两个表达式用关系运算符连接两个表达式如:如:ab, a+bb+c, ab 的值为的值为 0则表达式则表达式 bb)&(xy)ab

23、&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 的值是的值是 1

24、注意:注意:南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)注意:注意:在在C+程序中,程序中,欲表示数学关系欲表示数学关系 0x10 ,C+的逻辑表达式必须写成的逻辑表达式必须写成 0=x & x=10,而不能写成而不能写成 0= x =10。 为什么?为什么?南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有) 2.4.6 位运算符和位运算表达式位运算符和位运算表达式 位运算是对整型数据的运算位运算是对整型数据的运算(可以操作到位可以操作到位),符号位参与运算,符号位参与运算,主要用于系统程序设计。主要用于系统程序设计。位运算符共有位运算符共有6 种

25、种:它们是:按位它们是:按位与与(&) 按位按位或或(|) 按位按位异或异或() 按位按位取反取反() 左移左移() 南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)举例:按位举例:按位“与与”例如:已知:例如:已知:char a=3, b=2 , c ; 求:求: c = a & b ; 此时,可将此时,可将a、b、c看成是看成是一个字节长度的整型数。一个字节长度的整型数。 a 0000 0011 & b 1111 1110 c 0000 0010结果变量结果变量 c 的值为的值为 2。其它位运算,自学。其它位运算,自学。南京航空航天大学计算机科学与技术学院计算机基础教

26、学部 制作(版权所有) 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 = ?注意注意:只能用于变量,不能用于常量和表达式,只能用于变量,不能用于常量和表达式, 如:如: 3+; (a+b)+; 错误错误i = 4,j = 4i = 4,j = 3南京航空航天大学计算机科学与技

27、术学院计算机基础教学部 制作(版权所有)2.4.8 赋值运算符和赋值表达式赋值运算符和赋值表达式1赋值运算符赋值运算符 “ “=” ” 是赋值运算符,是赋值运算符,赋值表达式格式:赋值表达式格式: 求解过程:求解过程:求出求出 的值,赋给的值,赋给 赋值表达式的值:赋值表达式的值:为为 的值的值如:如:a = b + c 还可以是另一个赋值表达式,还可以是另一个赋值表达式,南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)如如: a=b=5 a=5+(c=6) a=(b=4)+(c=6)如果如果 a 初值为初值为 2,表达式结果?,表达式结果? 结果为结果为 7如如: a=

28、33是最简单的表达式是最简单的表达式i=i+1它不同于它不同于“等于号等于号”注意优先级注意优先级 与结合性与结合性 b = c = d = a+5自右向左自右向左表达式结果分别为:?表达式结果分别为:? 5 11 10南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2. 复合赋值运算符复合赋值运算符复合赋值运算符复合赋值运算符x*=y+8等价于等价于 x=x*(y+8)x%=3等价于等价于 x=x%3x/=9简写为:简写为: a += 3 a=a+3简写为:简写为: a - = b a=a-b同理:同理:赋值运算符赋值运算符 以及以及 复合赋值运算符复合赋值运算符的运算

29、优先级比的运算优先级比算术运算符算术运算符优先级低,优先级低,运算结合性为运算结合性为自右向左。自右向左。等价于等价于 x=x/9南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)例例: a+=a-=a*a如果如果 a 初值为初值为 2,表达式结果?,表达式结果? a+=a-=a*a结果结果 a 的值为的值为 - 4表达式的结果也为表达式的结果也为 - 4南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.4.9 逗号运算符和逗号表达式逗号运算符和逗号表达式逗号运算符逗号运算符:, 逗号表达式逗号表达式: ,. ,如如: a=3*5 , a*4 , a

30、+5逗号运算符逗号运算符优先级最低优先级最低,结合性:自左向右结合性:自左向右求解过程:求解过程:依次计算依次计算 、 . 的值。的值。逗号表达式的值:逗号表达式的值:为为 的值的值运算结束后:运算结束后:a 的值为的值为 15 整个表达式的值为整个表达式的值为 20南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)a=3*5, a*4x=(a=3, 6*3)赋值表达式赋值表达式x=a=3, 6*3逗号表达式逗号表达式例:例:如下表达式,如下表达式, 运算结束后运算结束后 a=? x=? 表达式表达式=?a=15, 表达式表达式=60a=3, x=18, 表达式表达式=18

31、a=3, x=3, 表达式表达式=18逗号表达式逗号表达式南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.4.10 sizeof( ) 运算符运算符和表达式和表达式 例例 int i ; double x; sizeof(int) sizeof(i) sizeof(double) sizeof(x)格式:格式: sizeof (类型标识类型标识/变量名变量名) 功能:功能: 求某类型变量所占字节数求某类型变量所占字节数结果均为结果均为 4结果均为结果均为 8南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)例:例: 求求 & 2.4.11 逻辑表达

32、式运算优化时的副作用逻辑表达式运算优化时的副作用从左向右扫描,计算从左向右扫描,计算,当当 为为真真时,继续计算时,继续计算 当当 为为假假时,即能确定整个表达式时,即能确定整个表达式的值为假,则停止计算的值为假,则停止计算南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)例:例:求求 | | 从左向右扫描,计算从左向右扫描,计算,当当 为为假假时,继续计算时,继续计算 当当 为为真真时,即能确定整个表达式时,即能确定整个表达式的值为真,则停止计算的值为真,则停止计算南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)课堂练习课堂练习int x , y ,

33、 z , w ; 输出结果?输出结果?x = y = z = 1 ;w = +x | +y & +z ;cout x t y t z n ;cout w n ;输出:输出: 2 1 1 1南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.5 类型转换类型转换2.5.1 赋值时的自动类型转换赋值时的自动类型转换 如果赋值运算符两侧的类型不一致,则遵循以下如果赋值运算符两侧的类型不一致,则遵循以下几条原则进行类型转换后赋值。几条原则进行类型转换后赋值。1. 整型变量整型变量实型数据实型数据, 舍弃小数舍弃小数(无四舍五入无四舍五入)。int i=3.96 ; i 为为 32

34、. 实型变量实型变量整型数据整型数据, 数值不变数值不变, 有效数位增加。有效数位增加。float f=23 ; f 为为 23.0 double d=23 ; d 为为 23.0南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)3整型数据之间相互赋值整型数据之间相互赋值 整型数据类型有:整型数据类型有:signed char unsigned charsigned short unsigned shortsigned int unsigned intsigned long unsigned long各种类型的整型数占用的字节数是不同的,其二进各种类型的整型数占用的字节数是

35、不同的,其二进制位数有长有短。它们之间相互赋值,其实就是它制位数有长有短。它们之间相互赋值,其实就是它们内存数据之间的赋值,分两种情况。们内存数据之间的赋值,分两种情况。下面以下面以 int 型数据与型数据与 char 型数据之间的赋值进行说明:型数据之间的赋值进行说明:南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有) 将将 int 型变量赋给字符型变量时型变量赋给字符型变量时 (长长短短) 方法:方法:截取低位赋值截取低位赋值例:例:signed char c1=250 ; c1真值为真值为 -6 250 为为int型常数型常数, 32 位:位:00000000 111

36、1 1010 c1: 1111 1010 南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)将字符型变量赋给将字符型变量赋给 int 型变量时型变量时(短短长长),又分成两种情况:又分成两种情况: 有符号的字符型数据有符号的字符型数据整型变量整型变量 需符号位扩展需符号位扩展 例:例:char c1=15 ; int i ; i=c1 ; i 为整型变量为整型变量 32 位:位: 00000000 0000 1111 c1(正号正号): 0000 1111扩展扩展正号,结果正号,结果i 的的真值为真值为 15 15 为整型常数为整型常数 32 位:位: 00000000 0

37、000 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 ; i

38、nt i ; i=c1 ; i 为整型变量为整型变量 32 位:位: 00000000 1111 1010 前面前面补补0,结果,结果 i 的的真值为真值为 250250 为整型常数为整型常数 32 位:位: 00000000 1111 1010 c1(无符号数无符号数): 1111 1010 南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)2.5.2 各种类型运算量混合运算时的自动类型转换各种类型运算量混合运算时的自动类型转换 C 语言的数值型数据语言的数值型数据(常量变量常量变量)包括包括:整型整型int, short int, long int, unsigned

39、int, unsigned short, unsigned long实型实型float, double字符型字符型char, unsigned char各种数据类型,它们的常量和变量之间可以混合各种数据类型,它们的常量和变量之间可以混合运算。两个量运算时,在计算机内部首先将它们运算。两个量运算时,在计算机内部首先将它们转换成相同数据类型的量,然后进行运算。虽然转换成相同数据类型的量,然后进行运算。虽然这种转换是这种转换是C+内部自动完成的,但是若编程者内部自动完成的,但是若编程者知道了转换机理,对掌握及灵活运用知道了转换机理,对掌握及灵活运用C+表达式表达式是有帮助的。转换原则如图是有帮助的。

40、转换原则如图2-3所示:所示: 南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有) int i; float f; double d; 10 + a + i * f - d / iintdoubledoubledoubledouble低类型低类型 高类型高类型低类型:低类型:存储字节少存储字节少 所表示的数据范围小。所表示的数据范围小。高类型:高类型:存储字节多存储字节多 所表示的数据范围大。所表示的数据范围大。double floatlongunsignedint char, short转换原则转换原则例:例:南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版

41、权所有) 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) % i ;表达式的运算结果为表达式的运算结果为 double 型,型,但但 :a 仍然为仍然为 int 型变量。型变量。南京航空航天大学计算机科学与技术学院计算机基础教学部 制作(版权所有)注

42、意注意: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 章章 结束结束

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号