数据类型运算符与表达式

上传人:宝路 文档编号:49846180 上传时间:2018-08-03 格式:PPT 页数:56 大小:210.83KB
返回 下载 相关 举报
数据类型运算符与表达式_第1页
第1页 / 共56页
数据类型运算符与表达式_第2页
第2页 / 共56页
数据类型运算符与表达式_第3页
第3页 / 共56页
数据类型运算符与表达式_第4页
第4页 / 共56页
数据类型运算符与表达式_第5页
第5页 / 共56页
点击查看更多>>
资源描述

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

1、第3章 数据类型、运算符 与表达式*C 数 据 类 型基本类型构造类型指针类型空类型void(无值)定义类型typedef数值类型字符类型char枚举类型enum整 型浮点型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体unionE(e)。例如3.0+5=3*105等。3.4.2 浮点型变量按其精度(即“数据的有效范围”)分为两种:(1)单精度型。类型关键字为float,一般占字节( 位)、提供位有效数字。(2)双精度型。类型关键字为double,一般占个字 节、提供1516位有效数字。Date3.5 字符型数据3.5.1 字符常量

2、1. 定义 用一对单引号括起来的单个字符,称为字符常量。 例,A、等。 2.转义字符 语言允许使用一种特殊形式的字符常量,就是以反 斜杠“ ”开头的转义字符。见教材P48 表3.3。注意:如果反斜杠、单引号或双引号本身作为字符常 量,必须使用转义字符:、“ 。Date例3.1 main() printf(“ AbbBbbCn”); 程序运行结果如下:CBA例3.2 main() printf(“She say,”This picture is beautiful!”n”); 程序运行结果如下:She say,” This picture is beautiful!”Date例3.3用转义字符输

3、出可打印字符和不 可打印字符。main() printf(“x4Fx4Bx21n”);/* 等价于printf(“OK!n”); */printf(“x15 xABn”);程序运行结果如下:! Date3.5.2 字符变量 字符变量的类型关键字为char,一般占用1字节 (8bit)内存单元;signed char的值域为-128127, unsigned char的值域为0 255 。1.变量值的存储:字符变量用来存储字符常量。将一个字符常量存储 到一个字符变量中,实际上是将该字符的ASCII码值( 无符号整数)存储到内存单元中。 例, char ch1, ch2; /*定义两个字符变量:c

4、h1 ,ch2*/ ch1=a; ch2=b; /*给字符变量赋值*/Date2.特性: 字符数据在内存中存储的是字符的ASCII码 一 个无符号整数,其形式与整数的存储形式一样,所以 语言允许字符型数据与整型数据之间通用。 (1)一个字符型数据,既可以字符形式输出,也可 以整数形式输出。例3.4 字符变量的字符形式输出和整数形式输出 。main() char ch1,ch2;ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2);printf(“ch1=%d,ch2=%dn”,ch1,ch2);程序运行结果:ch1=a,ch2=bch1=97,ch2=9

5、8Date(2)允许对字符数据进行算术运算, 此时就是对它们的ASCII码值进行算术运算。例3.5 字符数据的算术运算。main() char ch1,ch2;ch1=a; ch2=B;/*字母的大小写转换*/printf(“ch1=%c,ch2=%cn”,ch1- 32,ch2+32);程序运行结果:ch1=A,ch2=bDate3.5.3 字符串常量 1.字符串常量的概念和字符串长度字符串常量是用一对双引号括起来的若干字 符序列。 字符串中字符的个数称为字符串长度。长度 为0的字符串(即一个字符都没有的字符串)称 为空串,表示为“ ” (一对紧连的双引号)。 例如,“How do you

6、do.”、“Good morning.” 等,都是字符串常量,其长度分别为14和13(空 格也是一个字符)。Date2.字符串的存储 C语言规定:在存储字符串常量时,由 系统在字符串的末尾自动加一个0作为字 符串的结束标志。 注意:在源程序中书写字符串常量时, 不必加结束字符0,否则画蛇添足。 如果有一个字符串为“CHINA”,则它 在内存中的实际存储如下所示:最后一个字符0是系统自动加上的, 它占用字节而非字节内存空间。CHINA0Date综上所述,字符常量A与字符串常量“A“是 两回事: (1)定界符不同:字符常量使用单引号,而 字符串常量使用双引号; (2)长度不同:字符常量的长度固定为

7、1, 而字符串常量的长度,可以是0,也可以是某个 整数; (3)存储要求不同:字符常量存储的是字符 的ASCII码值,而字符串常量,除了要存储有效 的字符外,还要存储一个结束标志0。Date3.6 算术运算符与算术表达式1.五种基本算术运算符:+、-(减法/取负)、*、/、%(求余数)(1)关于除法运算/ C语言规定:当分子、分母均为整型数时,为 两个整数相除,其商为整数,小数部分被舍弃。 例如,5 / 2 = 2。(2)关于求余数运算要求两侧的操作数均为整型数据,否则出错。Date2. 自增(+)、自减(-)运算符: 自增运算使单个变量的值增,自减运算使单个变 量的值减。(1)自增、自减运算

8、符都有两种用法:前置运算运算符放在变量之前:变量、 变量;先使变量的值增(或减),然后再以变化后的值 参与其它运算,即先增减、后运算。后置运算运算符放在变量之后:变量、变 量; 变量先参与其它运算,然后再使变量的值增(或减) ,即先运算、后增减。Date例3.6 自增、自减运算符的用法与运算规则示例。 main() int x=6, y;printf(“x=%dn“,x); /*输出x的初值*/y = +x; /*前置运算*/printf(“x=%d,y=%dn“,x,y); y = x-; /*后置运算*/printf(“x=%d,y=%dn“,x,y); 程序运行结果: x=6 x=7,y

9、=7 x=6,y=7 思考题:如果将上例中“y=+x;”语句中的前置运算改为后置( y=x+;),“y=x-;”语句中的后置运算改为前置(y=-x;),程序运 行结果会如何? Date(2)说明: 自增、自减运算,常用于循环语句中,使循 环控制变量加(或减),以及指针变量中,使指 针指向下(或上)一个地址。 自增、自减运算符,不能用于常量和表达式 。 例如,5+、-(a+b)等都是非法的。 在表达式中,连续使同一变量进行自增或自 减运算时,很容易出错,所以最好避免这种用法。Date算术运算符的优先级别 :操作符 优优先级别级别+(加1)、-(减1) 1-(单目取负) 2*(乘)、/(除)、%(

10、取模 )3+(加)、-(减) 4Date3. 表达式和算术表达式: (1)表达式的概念用运算符和括号将运算对象(常量、变量 和函数等)连接起来的、符合语言语法规则的 式子,称为表达式。单个常量、变量或函数,可以看作是 表达式的一种特例。(将单个常量、变量或函数 构成的表达式称为简单表达式,其它表达式称之 为复杂表达式。)Date(2)算术表达式的概念 表达式中的运算符都是算术运算符。例如,3 + 6 * 9 、(x + y) / 2 - 1等,都是算术表达式。4.运算符的优先级与结合性: (1)所谓结合性是指:当一个操作数两侧的运算符具 有相同的优先级时,该操作数是先与左边的运算符结合, 还是

11、先与右边的运算符结合。 自左至右的结合方向,称为左结合性。反之,称为右 结合性。 结合性是语言的独有概念。除单目运算符、赋值运 算符和条件运算符是右结合性外,其它运算符都是左结合 性。Date(2)表达式求值 按运算符的优先级高低次序执行。例如, 先乘除后加减。 如果在一个运算对象(或称操作数)两侧 的运算符的优先级相同,则按语言规定的结合 方向(结合性)进行。 例如,算术运算符的结合方向是“自左至右” ,即:在执行“a b + c”时,变量b先与减号结合 ,执行“a - b”;然后再执行加c的运算。Date3.7 赋值运算及赋值中的类型转换 1.赋值运算:“=”就是赋值运算符,它的作用是将一

12、个表达式的值赋给一个 变量。赋值运算的一般形式为: 变量 = 赋值表达式 ;例如,int x = 5,y; y = 3+x*7-6 ;注意:如果表达式值的类型与被赋值变量的类型不一 致,系统自动地将表达式的值转换成被赋值变量的数据类型,然后 再赋值给变量。例,main()int a=5;float b;b=a;相当于b=5.0Date2.复合的赋值运算符:复合赋值运算符是由赋值运算符之前再加一个双目运算符 构成的。(例,+=、-=、*=、/=、%=等)复合赋值运算的一般格式为: 变量 双目运算符 = 表达式 复合赋值运算符它等价于:变量 = 变量 双目运算符 (表达式)。例如,x += 3 /

13、* 等价于x=x+3 */y *= x + 6/* 等价于y=y*(x+6),而不是y=y*x+6 */C语言规定的10种复合赋值运算符如下:+=,-=,*=,/=,%=; /*复合算术运算符(5个)*/b *= b += 4; 分析: b += 4;b=9; b *= 9;b=81;Date3. 赋值中的类型转换(自动转换 ):补充: Turbo C系统中将字符型以及整型均看作 有符号类型,其最高位均看作符号位。最高位为0代表正 数,最高位为1代表负数;正数在存储器中以其二进制原 码存储,负数在存储器中以其二进制补码存储。对于负数,其原、补码之间的转换方法如下:原码补码:除最高位外各位均取反

14、;末位加1。补码原码:方式同”原码补码”。快捷方法:char型:补码=256+原码(例,-2的补码为254)int型:补码=65536+原码(例,-2的补码为65534 )Date转换规则:赋值号右边的值转变为赋值号左 边变量所属的类型。 分为三种情况: (1)截位:赋值号右边值的精度高于赋值 号左边变量的精度,将多余位数截掉。 (2)补位:赋值号右边值的精度低于赋值 号左边变量的精度,将缺的位数补上。 (3)位数不变,内容不变:适合于精度相 同的数据类型之间互相赋值。 (例,unsigned int short int)Date(1)截位:又分为以下几种情况。intchar:保留低8位,将多

15、余的高8位截去。 例,char a=515;因为(515)10=(00000010|00000011)2高位截去后,代表a =(00000011)2,代表ASCII码为3 的符号。long intint/short int:保留低16位,将多余的高16位截 去。 float/doubleint:将小数部分舍去。 例,int x=36.001; 即x值为36。double float:截取前7位有效数字,结果会降低精度 。 例,float d=3678.0756777; 即d值为3678.075。 Date(2)补位:又分为以下几种情况。 整型 float/double:数值不变,但以 float/double形式存入变量(即,具体在存储器中占4字 节/8字节存储空间)。 例,float f=51; 则在内存中f存储的是51.00000。charint/short int/long int:unsigned char 整型:将char的具体值放入整 型的低8位,不足的高位全补0。signed char 整型:将char的具体值放入整型 的低8位;若字符的最高位为0(代表正数),则不足的 高位全补0;若字符的最高位为1(代表负数),

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

当前位置:首页 > 中学教育 > 教学课件

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