ImageVerifierCode 换一换
格式:PPT , 页数:45 ,大小:311.50KB ,
资源ID:373590      下载积分:2000 积分
快捷下载
登录下载
邮箱/手机:
温馨提示:
如需开发票,请勿充值!快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝扫码支付 微信扫码支付   
注意:如需开发票,请勿充值!
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【http://www.mydoc123.com/d-373590.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(第3章 数据类型、运算符与表达式.ppt)为本站会员(priceawful190)主动上传,麦多课文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知麦多课文库(发送邮件至master@mydoc123.com或直接QQ联系客服),我们立即给予删除!

第3章 数据类型、运算符与表达式.ppt

1、第3章 数据类型、运算符与表达式,1-C的数据类型 2-常量与变量 3-整型数据 4-实型数据 5-字符型数据 6-变量赋初值 7-各类数值型数据间的混合运算 8-算术运算符与算术表达式 9-赋值运算符和赋值表达式 10-逗号运算符和逗号表达式,1-C语言的数据类型,数据类型,基本类型,整型 字符型 实 型 枚举型,构造类型,指针类型,空类型,数组类型结构体类型共用体类型,字符型(char) 1字节 数值型整型短整型 (short) 2字节整 型 (int) 2字节长整型 (long) 4字节 (可表示到21亿)实型单精度 (float) 4字节 6/7 位有效数字长单精度(long floa

2、t) 8字节 16/17位有效数字双精度 (double) 8字节 长双精度(long double) 10字节 20位有效数字 可知:charintlong int=floatdouble (以上字节长度为Turbo C环境)测试类型长度的专用关键字 sizeof printf(“int:%d bytes n”,sizeof(int);,2-常量与变量,程序的主要任务是处理数据(输入输出和加工),数据在程序中有两种表征形式:变量和常量。 常量:表示数据的值。常量仅仅代表某个值,它的值不能被变。 变量:值可以改变,具有自己的名字,。 C语言区分两种常量:直接常量和符号常量。12,3.5等都是直

3、接常量;符号常量是一种具有名字的常量,需要单独定义。它的定义格式: #define NUM 30 有了上行,NUM就代表30,但30在这里有个名字叫NUM。 在C语言程序中,直接常量可以直接使用,符号常量和变量必须先定义再使用。定义了一个变量,程序就为这个变量分配(安排)了一个大小合适的内存单元。,#define PRICE 30 P39 main() int num,total;float v ,r,h;num=10;total=num*PRICE;printf(“total=%d”,total);r=2.5;h=3.2;v=3.14159*r*r*h;printf(“v=%fn”,v);

4、,常量,变量名: 以字母或下划线 开头,由数字、 字母、下划线构 成。最多32个字 符(TC),多余不识别.一般小写。,变量,变量先定 义后使用,符号常量,名字常用大写,Page 5,变量名: 如 SUM, A1, A2, _Xn, ,等均为合法变量名,但a-b , c-d , a.b , $888, #555, 3x56, ab 等均为非法变量名,变量名区分大小写,如a与A意义是不一样. 如sum、Sum是不同的标识符。,2). 语言中有32个关键字,不允许用户再用来定义标识符。,3-整型数据,整型常量的表示方法 常量的表示方法是指常量数值的表示形式。C语言中提供了3种表示整数常量的方法:

5、(1)10进制整数,比如:10,-23,89。 (2)8进制整数,C语言规定,以数字0开头的数是8进制数。比如,017实际上是(17)8,相当于10进制数的15;-011相当于10进制数-9; (3)16进制整数,C语言规定,以0x或0X开头的数是16进制数。比如,0x18实际上是(18)16,相当于10进制数的24。 有了上面3种整数表示方法,我们可以这样定义整数的符号常量: #define NUM1 30 #define NUM2 026 #define NUM3 0x1a 其中常量NUM1的值是30,常量NUM2的值是22,常量NUM3的值是26。,整数在内存中的存放形式 数据在内存中以

6、2进制形式存放。PC机中,一个整数默认情况下需要 用2个字节(16位)的内存单元存放。比如,整数14的2进制表示是(1110)2, 那么在内存中它是这样存放的:,整数的数值在内存中用补码表示。 P41 一个整数的绝对值的2进制表示称为这个数的原码。比如(0000000000001110)2就是14和-14的原码。一个正整数和零的补码就是原码本身。但一个负数的补码是它的原码取反加1的结果。因此,-14的补码应为(1111111111110010)2,它的最高位是1,表明这是个负数。,-14的原码(取绝对值后用二进制表示),取反,加1后,成为补码,整型变量的分类 整型变量的基本类型符是int。C语

7、言允许程序员在定义整型变量时,在int前面增加两类修饰符: 一类是控制变量是否有符号,包括:signed(可省)和unsigned 另一类控制整型变量的值域范围,包括short和long。 比如,可以这样定义一个整型变量: unsigned long int a; 这样就形成了6类整型变量:,整型数据的分类和取值范围,类型 定义符 位数 数值范围 基本 int 16位 -32768 - 32767 短整 short 16 同上 长整 long 32 略 无符号 unsigned 16 0-65535 无符号短整 unsigned short 16 065535 无符号长整 unsigned l

8、ong 32 略,整型变量的定义 定义格式:int 变量名;必须用分号结尾 有空格 必须是合法标识符 例如:int a; 如果想一次定义多个整型变量,可以这样:int a , b , c; 变量间用逗号分隔 上面一行定义等价于下面3行,但形式却简洁一些: int a; int b; int c;,int a,b,c; (正确) a=b=c=3;int a=b=c=3; (错误),#define PRICE 30 main() int num,total;float v ,r,h;num=10;total=num*PRICE;printf(“total=%d”,total);r=2.5;h=3.

9、2;v=3.14159*r*r*h;printf(“v=%fn”,v); ,int、unsigned int 2字节 short unsigned short2字节 long unsigned long4字节,整型常量,整型变量,整型变量定义,Page 14,4-实型数据,实型常量的表示方法 实数(real number)又称为浮点数(floating-point number)。因此,实型又称为浮点型。C语言中,实型常量有两种方法表示: (1)10进制小数形式。这种实型常量由数字和小数点组成。比如:1.2、33.24、0.0等等。 (2)指数形式: 尾数e/E指数,1.234e2表示1.23

10、4x102、2.2E13表示2.2x1013。e或E前面必须有数字,后面必须是整数!e3、.e5、1e3.5都是错误的指数形式。,实型变量的分类和定义,(1)单精度实型,数据类型符是float,这种变量占用4个字节(32位)内存,变量绝对值的取值范围是10-371038。例如: float f=2.14, F; (2)双精度实型,数据类型符是double,这种变量占用8个字节(64位)内存,变量绝对值的取值范围是10-30710308。例如: double x, y;,实型数据的精度(舍入误差)实型数据的精度决定了实型变量所能表示的有效数字的个数。下表列出了2种实型数据所能精确表示的数字个数。

11、,5-字符型数据,字符型数据就是那些用来表征英文字母、符号、汉字的数据。 字符型数据实际上就是整数数据,但它只占用1个字节(8位)的内存单元。所以,一共只有256(28)个字符型数值。 每一个字符都对应着一个值,被称为字符的ASCII码。美国国家标准局为每个字符都规定了固定的数值(详见书附录的ASCII码表P374)。,字符常量和字符串常量的表示方法字符常量:用单引号括起来的一个字符,其值是该字符的ASCII 码值。 b 字符串常量:用双引号括起来的字符序列。 “abcd” (1)字符常量有两种表示方法: 对于那些可以直接输入的字符,可以用单引号将其括起来表示其常量。例如,a是代表字母a的字符

12、常量,*是代表符号*的字符常量,3是代表数字字符3的字符常量。 对于那些无法直接输入的字符以及某些特殊字符,需要用单引号括起来的转义字符来表示,比如:r、n、127、xf8,转义字符:以一个斜杠开头的字符序列, 代表某个特定的ASCII码字符。P48 P49 例,(2)字符串常量的表示方法,用单引号括起来的是字符常量, 用双引号括起来的被称为字符串常量。 字符串实际上是连续存放的一组字符,但最后一个字符的值是0。比如,字符串”HELLO”在内存中是这样存放的。,下面列出了一些包含转义字符的字符串常量: “Say “bye” 表示字符串:Say “bye” “d:borlandcbin” 表示字

13、符串:d:borlandcbin,(3)字符型变量 字符分为有符号字符和无符号字符,字符可以参与数值运算。一般默认为有符号字符。 char,有符号字符,值域:-128127(-2727-1),第8位是符号位;变量定义:char ch=A; unsigned char,无符号字符,值域:0255(027),第8位参与数值运算;变量定义:unsigned char uc;,注意:C语言没有字符串变量,6-给变量赋初值,例: int a=3; float f=3.56; char c=a; int a,b,c=5;,7各类数值型数据间的混合运算,数据参加运算前必须进行下列转换: P54 char,s

14、hortint,floatdouble 混合运算时,数据类型由低级高级: int unsigned long double 低 高,注意:上图并不意味着int必须到unsigned再到long 的依次转换,而是由算式中的最高级进行转换的。,不同类型数据混合运算时的类型转换的例子,例: int i; float f; double d; long e; 运算次序:10+ a + i*f - d/e 10+97 转换为double 转换为double 再相乘 再相除 107double 结果为double,8-算术运算符与算术表达式,C运算符简介 算术运算符 ( + - * / % ) 逗号表达式

15、 ( , ) 关系运算符 ( = | & ) 赋值运算符 ( = ) 条件运算符 ( ? : ) 指针运算符 ( * & ) 求字节数运算符 ( sizeof ) 强制类型转换运算符 ( 类型 ),C语言的运算能力体现在提供了大量的运算符,这些运算符按照需要的操作数的个数分为:三目运算符、双目运算符和单目运算符。,算术运算符和算术表达式,C语言提供的算术运算符包括:加(+)、减()、乘(*)、除(/)和取余(%)。这些运算赋是双目运算符。利用算术运算符连接起来的式子称为算术表达式。+、*、/运算符既可用于整型数据的算术运算,又可用于实型数据的算术运算。但%只能用于整数。,注意: %不能用于fl

16、oat型数据,2.5%2是非法表达式。 *、/和%比+、-优先级高,*、/、%同优先级,+、-同优先级 算术运算符具有左结合性 与赋值运算符和类型强制转换运算符相比,算术运算符的优先级比赋值运算符高,但比类型强制转换运算符低。 (int)2.6 * 2=4 (int) (2.6 * 2) =5,C语言中,任何数据类型的数据都有固定的取值范围。当表达式的值超出了取值范围时,就会丢失数据,这种现象称为数据溢出。下面的例子程序说明了这一点: (P44 例3.3),自动类型转换的规则与强制类型转换符(P59-61)自动类型转换:当=左右两边的数据类型不同时,C语言首先将=右边的表达式的值转化为=左边的

17、数据类型,然后再赋值给=左边的变量,这种操作称为自动类型转换。比如,如果a是int型变量,表达式a=3.2的值将是3,而不是3.2。 C语言进行自动类型转换的规则如下: (1)当将长整型数据转换为整型数据时,直接截取长整型数据的低16位作为整型数据。当将整型数据转换为字符型数据时,直接截取整型数据的低8位作为字符型数据。(长短,截取低位) 例如: long a=0xff00f00f; int b; char c; b=a;/b的值将是0xf00f,是a的低16位 c=b;/c的值将是0x0f,是b的低8位,(2)当将无符号字符型数据转换为整型数据时,直接将字符数据作为整型数据的低8位,整型数据

18、的高8位补零;当将无符号整型数据转换为长整型数据时,直接将整型数据作为长整型数据的低16位,高16位补零。例如: unsigned char ch=0xfa; unsigned int u=0xff00; int k; long L; k=ch;/k的值将是0x00fa L=u;/L的值将是0x0000ff00,若long b=65536;(216) int a; a=b; 则 b=? (b=0),(3)当将有符号字符型数据转换为整型数据时,直接将字符数据作为整型数据的低8位,将字符数据的符号位的值扩展到整型数据的高8位,即如果字符型数据的符号位是1,整型数据的高8位就都补1,否则都补零,这称

19、为符号位扩展; 当将有符号的整型数据转换为长整型数据时,直接将整型数据作为长整型数据的低16位,将整型数据的符号位扩展到长整型数据的高16位中。例如: char ch=0x0a; int a,k=0xf011; long L; a=ch; /a的值将是0x000a L=k; /L的值将是0xfffff011,2,错误,4,1.5,作业: P65 6,7,9,10,+的作用是使变量自己增1,而-的作用是使变量自己减1。 +、-的优先级与负号运算符的优先级相同。+a : 先将a自增1后,再用a的值;a+ : 要先用a的值,再将a自增1。-运算符也是一样。例如,已知a=20;表达式b=+a的值是21

20、,而b=a+的值却是20;表达式b=-a的值是19,而b=a-的值却是20。,自增自减运算符和负号运算符,又如: k=3; a=15-k+; printf(“a=%d ”,a); printf(“k=%dn”,k); b=+k+2; printf(“b=%d ”,b); printf(“k=%dn”,k);,将输出: a=12 k=4 b=7 k=5,注意: +和-运算符只能用于变量,不能用于常量和表达式。因为,+和-蕴含着赋值操作。 负号运算符、+、-和强制类型转换运算符这些同级别运算符连用时,按照从右向左的顺序计算,即右结合性。 两个+和-之间不能有空格。,57 157 98 未知,58

21、156 98 未知,语法错,58 156 99 99,main() int i=5; printf(“%dn”,i); printf(“%dn”,-i); printf(“%dn”,i+); printf(“%dn”,i-);printf(“%dn”,+i); printf(“%dn”,i);,连续使用+、-:(i=5) k=(+i)+(+i)+(+i)=24 (i=8) k=(i+)+(i+)+(i+)=15 (i=8) i+j=(i+)+j +的左结合性 (i=5) printf(“%d,%dn”,i,i+); 求值顺序:自右向左 6, 5 (i=6),9-赋值运算符和赋值表达式,赋值运算

22、符:= 运算符目数:双目运算符a = b 待赋值的变量 要赋的值(可以是常量、变量或表达式) 用=连接起来的式子称为赋值表达式。 赋值表达式加上分号就构成了赋值语句。,赋值运算符和赋值表达式 C语言允许在一个表达式中对多个变量连续赋值,例如:a=b=c=22。连续赋值的表达式的运算顺序是从右向左(又称为右结合性),因为=右边的表达式未求值之前,无法对=左边的变量赋值。,注意:=左边不能是表达式,因为表达式不对应内存单元。下面的赋值表达式是非法的: (3+a)=22 a=b+2=10,80 未知 未知 未知,80 80 未知 未知,70 80 未知 未知,80 80 80 未知,80 80 80

23、 80,复合的赋值运算符,C语言除了提供了一个赋值运算符=以外,还提供了各种复合赋值运算符。 将算术运算符、位运算符与赋值运算符组合在一起就构成了复合赋值运算符。 复合赋值运算既包含了算术运算或位运算,又包含了赋值操作。 复合赋值运算符与赋值运算符是同一个优先级。,a=12 a+=a-=a*a : 自右向左1 a=a-a*a=12-12*12=-1322 a+=(a=-132) 即a=a+(a=-132)= -264,10-逗号运算符和逗号表达式,一种特殊的运算符:用逗号连接起来的表达式称为逗号表达式。逗号表达式的一般形式是: 表达式1,表达式2,.,表达式k 比如:a+3,b=3,b+ 逗号运算符的优先级是最低的,并且具有左结合性。 逗号表达式的求值顺序是,从左向右依次计算用逗号分隔的各表达式的值,最后一个表达式的值就是整个逗号表达式的值。 比如 表达式a=3,b=a+3,b+的表达式的值是6 表达式a=3,b=a+3,+b的表达式的值是7,

copyright@ 2008-2019 麦多课文库(www.mydoc123.com)网站版权所有
备案/许可证编号:苏ICP备17064731号-1