第2章C语言的基本数据类型与表达式.ppt

上传人:本田雅阁 文档编号:3423452 上传时间:2019-08-24 格式:PPT 页数:48 大小:343.54KB
返回 下载 相关 举报
第2章C语言的基本数据类型与表达式.ppt_第1页
第1页 / 共48页
第2章C语言的基本数据类型与表达式.ppt_第2页
第2页 / 共48页
第2章C语言的基本数据类型与表达式.ppt_第3页
第3页 / 共48页
第2章C语言的基本数据类型与表达式.ppt_第4页
第4页 / 共48页
第2章C语言的基本数据类型与表达式.ppt_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《第2章C语言的基本数据类型与表达式.ppt》由会员分享,可在线阅读,更多相关《第2章C语言的基本数据类型与表达式.ppt(48页珍藏版)》请在三一文库上搜索。

1、第 2 章 C语言的基本数据类型与表达式 2.1 C语言的基本数据类型 2.2 常量和变量 2.3 运算符与表达式 2.4 数据类型转换,C语言程序设计教程,2,2.1 C语言的基本数据类型,一、数据类型概述,第2章 C语言的基本数据类型与表达式,3,int,0000,0002,0004,0006,0008,0010,float,double,第2章 C语言的基本数据类型与表达式,4,1、常量: (1) 十进制形式:与数学上的整数表示相同; 例如: 12, -100, 0 (2) 八进制形式:在数码前加数字0; 例如: 012=1*81+2*80=10(十进制) (3) 十六进制形式:在数码前

2、加0X(数字0和字母X)。 例如: 0x12=1*161+2*160=18(十进制) * 八进制的数码范围为07; 018 * 十六进制的数码除了数字09外, 还使用英文字母a f (或A F)表示1015。 如:0x1e ,注意!,二、整型,第2章 C语言的基本数据类型与表达式,5,2、分类: 根据数据所占的二进制位数分为:int、short、long; 同样存储长度的数据又分unsigned、signed; 故可组合出六种类型。缺省值为short。 如:25(short),25l(长整型),25u(无符号),25ul(无符号长) 3、值域: 由机器中数据的存储长度决定。 如Turbo C中

3、,有 short(2字节)int(2字节) long(4字节) 关键字 所占位数 取值范围 short 16(2B) -3276832767 unsigned short 16(2B) 065535 int 16(2B) -3276832767 unsigned 16(2B) 065535 long 32(4B) -21474836482147483647 unsigned long 32(4B) 04294967295,第2章 C语言的基本数据类型与表达式,6,1、常量: (1) 十进制小数形式:由数字和小数点组成; 例如: 3.4, 4., .3。 (2) 指数形式:“十进制小数”+“ e

4、(或E)”+“十进制数整数”。 例如: 12.5e-6 表示12.510-6 。 小数点不能单独出现; 0. .0 . e或E的两边必须有数,且其后面必须为整数; 如: 6E0.2 e5 2、分类: 关键字 字节数 取值范围 精度(位) float 4 3.410-38 3.41038 7 double 8 1.710-308 1.710308 15 缺省值类型为double。,注意,第2章 C语言的基本数据类型与表达式,三、实型,7,1、常量: (1) 用单引号括起来的一个字符;如:A、 1、?等。 (2) 用单引号括起来的由反斜杠()引导的转义字符。 字符形式 功能 n 换行 t 横向跳格

5、 b 退格 r 回车 反斜杠字符 单引号字符 ddd 8进制数表示的ASCII码对应的字符 xhh 16进制数表示的ASCII码对应的字符,第2章 C语言的基本数据类型与表达式,四、字符类型,8,例如:字符A的ASCII码为: 65D(十进制)=41H(十六进制)=101Q(八进制) 字符A可以表示为A、x41、101。 2、分类: char 和 unsigned char; 3、值域: 每个字符型数据在内存中占一个字节;包括ASCII字符表中的所有字符(可显示字符和非显示字符)。 4、字符串: 是用一对双引号括起来的字符序列。 如:“SHANGHAI”,“AbcdeFGHijk”,“How

6、are you”。,注意,第2章 C语言的基本数据类型与表达式, a与“a”的区别。,9,一、常量与符号常量 常量是指在程序运行中,其数值不能被改变的量。 常量又可分为直接常量和符号常量。,第2章 C语言的基本数据类型与表达式,2.2 常量与变量,10,120 、 -100、 0; 0120、 072; 0xFFFF、 0x1e、0X28AF,0XED4 ; 120L, 200L ; 长整型常量 3.14、 -3.1、 5.12E-6 ; a 、#、n、101 ; 099、12f、 0xg 、48EA ; 019.5 、1e-08; 实型常量只能用十进制形式表示 2.1E10.2、E-6、6.

7、4E+4.8、E9 ; “changsha“ 、“+?ab“ ; 、p 、ab ;,第2章 C语言的基本数据类型与表达式,1、直接常量:是在程序中直接引用的数据。,请判断这些常量正确与否:,11,2、符号常量 是用标识符来表示一个数据;在程序不能给它赋值。 定义形式: #define 标识符 常量数据 例如: #define PI 3.14159 在程序预处理时,凡是出现标识符PI的地方都将用 数据3.14159来替换。 如: 2*2.3*PI 就等价于 2*2.3*3.14159。,第2章 C语言的基本数据类型与表达式,二、 变量 变量是指以标识符为名字,其值可以改变的量。 变量代表计算机内

8、存中的某一存储空间,该存储空间 中存放的数据就是变量的值。 在同一程序块中,变量不能被重复定义。 使用变量时必须“先定义,后使用”。,12,第2章 C语言的基本数据类型与表达式,2、变量初始化 在说明变量的同时给变量一个初始值。,例如,int a=5, b=3; int a=b=c=3; int a,b,c; a=b=c=3; ,变量名,a,变量地址,5,变量值,13,main( ) int x,y,z,w; /*定义x,y,z,w为整型变量*/ unsigned int k; /*定义k为无符号整型变量*/ x=10;y=-20;k=30; z=x+k;w=y+k; printf(“x+k=

9、%d,y+k=%dn”,z,w); ,第2章 C语言的基本数据类型与表达式,例2-1:,程序运行结果为: x+k=40,y+k=10,14,例,完善程序(s1-3.c) 程序功能:下面的程序是求整数a/b 的商和余数,请用正确的表达式填空。 main() int a,b,c,d; a=100; b=30; _ _ printf(“a=%d, b=%d, c=%d, d=%dn”, a,b,c,d); ,第2章 C语言的基本数据类型与表达式,15,按操作功能运算符大致可分为算术运算符、关系运算符、逻辑运算符、按位运算符以及其它运算符如赋值运算符、条件运算符、逗号运算符等。 单目、双目、三目运算符

10、 表达式是由操作数和运算符组成的序列。,第2章 C语言的基本数据类型与表达式,2.3 运算符与表达式,算术运算符 + - * / % 关系运算符 = = = != 逻辑运算符 ! & 位运算符 | & 赋值运算符 = 条件运算符 ?: 逗号运算符 , 指针运算符 * 和 & 求字节数运算符 sizeof 强制类型转换运算符 分量运算符 下标运算符 ,16,一、 算术运算符和算术表达式 1、 运算符 +(加):3+4、 +3 -(减):3-5、 -5 *(乘):3*5 /(除):5/2的值为2;5.0/2的值为2.5; 如果两个操作数均为int,则结果也是int,小数部分将去掉。如果两个数中有浮

11、点型,则结果也是float。 例如:3.0+1/2*(98%100) %(取余):5%3的值为2;-5%3的值为-2; 5%(-3)的值为2; -5%(-3)的值为-2; 两个操作数如果符号不同,结果以左操作数为准 两个操作数只能为int或char 若a能被b整除,则有:a%b=0。 整数除与求余运算存在如下关系:a%b=a-a/b*b 。 例如:25+b+a%12.3-(-8)/c*100,第2章 C语言的基本数据类型与表达式,17,2、算术表达式 用算术运算符和括符将操作数连接起来的式子。 优先级:() *、/、% +、- 结合性:从左至右; 表达式的值: 数值型(int、long、uns

12、igned、double);,例如: 已知: float a=2.0; int b=6,c=3; 求解: a*b/c-1.5+a+fabs(-5)=?,第2章 C语言的基本数据类型与表达式,18,float a=2.0; int b =6,c =3; a*b/c -1.5 +a +fabs(-5),12.0/3,5,4.0 - 1.5,2.5 + 97(int),99.5 + 5,104.5(double),第2章 C语言的基本数据类型与表达式,19,1、6种关系运算符:双目:= = != 2、关系表达式:用关系运算符将表达式连接起来的式子 优先级: (= )( = != ) 结合性:自左至右

13、; 表达式的值: 若为真,则结果为1; 若为假,则结果为0。,35 的值为 0; 32 的值为 0; 3+(4b ab=c b+cbc,例如,第2章 C语言的基本数据类型与表达式,二、关系运算符和关系表达式,20,1、3种逻辑运算符:双目:& | 单目:! 逻辑量:可以是整型、实型、字符型和指针类型, 0假 非0真; 如:0,0.0,0,NULL都代表假。 2、逻辑表达式:用逻辑运算符将表达式连接起来的式子 优先级: !&| 结合性:自左至右; 表达式的值: 若为真,则结果为1; 若为假,则结果为0。,第2章 C语言的基本数据类型与表达式,三、逻辑运算符和逻辑表达式,21,int a=5; f

14、loat b=3.5; !a (0) !(a 0) (0) (a 0) (1),例如,第2章 C语言的基本数据类型与表达式,22,! 高 算术运算符 关系运算符 &和| 赋值运算符 低,4 - 0,1 & 2,8 4,1,0,1,5 3 & 2 | 8 4 - !5,第2章 C语言的基本数据类型与表达式,23,注意: 在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是在必须执行下一个逻辑运算符才能求出表达式的解时,才执行该运算符。 表达式的结果一旦得知,运算马上停止。 例如:设a=5,b=0,c=7 !a&b&a&d&(c+7)a !b|a7&(a+b+c|d+e+f) !i等价于i=

15、0 当i=1,(i=0)=0,!i=0 当i=0,(i=0)=1,!i=1,第2章 C语言的基本数据类型与表达式,24,逻辑表达式一般用于控制语句中的条件: 例如: (1) n是小于m的偶数: nm&n%2=0 (2)year是闰年: (能被4整除但不能被100整除或能被400整除) year %4=0&year%100!=0|year%400=0,第2章 C语言的基本数据类型与表达式,25,分析以下程序的执行结果(s2-1.c) #include main() int a,b,d=241; a=d/100%9; b=(-1) ,第2章 C语言的基本数据类型与表达式,26,四、自增与自减运算符

16、 单目:+,- 有两种形式: +i,-i:使用之前使i的值增1(或减1); i+,i-:使用之后使i的值增1(或减1); 它们的不同在于:前者先用i值后再加1或减1。后者先加1或减1后再用i值。,等价于 i=i+1;,j=i;i+; 所以i的值为4,j的值为3。,i+;j=i; 所以i的值为4,j的值为4。,例如:,(1) i+; +i; (2) i=3; j=i+; (3) i=3; j=+i;,第2章 C语言的基本数据类型与表达式,27,例如: 设int i=3,x; x=i+; x=? i=? x=+i; x=? i=? (i+)+(i+)+(i+); 表达式的值为: i? (+i)+(

17、+i)+(+i); 表达式的值为: i? 注意必须是左值表达式。(i+j)+是错误的。,第2章 C语言的基本数据类型与表达式,28, 结合性:自右至左。 如: i = 2; j = -i+; 等价于:j=-(i+); 即: j=-i;i+; “+”与”-“是同优先级 所以i的值为3,j的值为-2。,第2章 C语言的基本数据类型与表达式,例如:设i=3,j=4,k=i+j,k=? 注意 “+”或“-”自增与自减运算符的使用。,29,序列点:在i+中,引起变量自加的计算点。 结果: a为0,b为0,c为0,d为1。,第2章 C语言的基本数据类型与表达式,30, 综合举例: 1、设int a=1,b

18、=2,c,d,e; c=(-a+)+(+b); d=(b-)+(+a)-a; e=(a/(+b)-(b/(-a); ?a,b,c,d,e 2、设int a=2,b=3;,c,d,e,f; c=(a+=-b); d=(a=+b); e=(a-!=b); f=(+ab-); ?a,b,c,d,e,f,第2章 C语言的基本数据类型与表达式,31,3、 设int x=4;y=25;z=2; z=(-y/+x)*z ?z 4、设int x=y=z=0; +x|+y,第2章 C语言的基本数据类型与表达式,32,1、赋值运算符 单目:= 2、赋值表达式:用赋值运算符将变量和表达式连接起来 形式: = 求值规

19、则: 将“=”右边表达式的值赋给左边的变量。 优先级: !算术关系&和|赋值 结合性:自右至左; 表达式的值:被赋值变量的值。 例如:(1) x=(y=12)/4 y值为12,x值为3,表达式的值为3 (2) x=y=12/4 y值为3,x值为3,表达式的值为3 (3) x=(y=12/4) y值为3,x值为3,表达式的值为3 (4) (x=y)=12/4 两个操作数类型可以不同,但执行赋值前右操作数被自动转化为左操作数的类型。右操作数可以是一个表达式。如果表达式是一个赋值表达式,则形成多重表达式。如,i=j=x=y=5;,第2章 C语言的基本数据类型与表达式,五、赋值运算符和赋值表达式,33

20、,3、复合赋值运算符(双目) *=、/=、 %=、 +=、 -=, =, &=、 =、 = 注意: 复合运算符是一个运算符,但功能上,是两个运算符功能的组合。 例如: (1) a+=b 相当于 a=a+b a*=b 相当于 a=a*b a*=b+c 相当于 a=a*(b+c) 而不是 a=a*b+c (2) 设a=12,计算表达式a+=a-=a*12和a+=a-=a*=12 的值,第2章 C语言的基本数据类型与表达式,34,例,分析以下程序的运行结果。(s1-4.c) main() int a,b,c,d; a=b=c=5; c+=a+b; d=c%a; ,第2章 C语言的基本数据类型与表达式

21、,35,综合练习: 设int a=12,n=5; a+=a-=a*=a; a%=(n%=2); 设int x3,y; x*=y=x+;,第2章 C语言的基本数据类型与表达式,36,1、条件运算符 ?和: ,它们与三个操作数组组成三元运算。 形式为: ? : 求值规则和表达式的值: 真(非0),求解表达式2 求解表达式1 条件表达式的值 假(0),求解表达式3 例如: int max,a=5;b=3; max=ab?a:b max及赋值表达式的值均为5; ab?a:b+1 条件表达式的值为4。,第2章 C语言的基本数据类型与表达式,四、其它运算符,37,又如: -a = b+ ? a+ : b+

22、 (a=a-1;)4 = 3(b=b+1;)?a+:b+ a为4 b为4 0 4(b=b+1;) 表达式值为4 b为5 a值为4,b值为5,条件表达式的值为4。 优先级: 逻辑条件赋值,第2章 C语言的基本数据类型与表达式,38, 结合性:自右至左; y = x10 ? x/10 : x0 ? x: -x; 等价于: y = x10 ? x/10 :(x0? x: -x); 当x的值为15时,表达式的结果为:1 当x的值为5时,表达式的结果为:-5,第2章 C语言的基本数据类型与表达式,39,综合举例: int x=1,y=2,z=3,a; x+=y+=z; a=xy?x+:y+; 思考:z+

23、=xy+?x+:y+; int x=3;y=4,z=4; (z=yx)?1:0; int a=5,c=4; (-a=c+)?a?+c;,第2章 C语言的基本数据类型与表达式,40,分析以下程序的执行结果(s2-2.c) #include main() int i=16,j,x=6,y,z; j=i+1; printf(“1:%dn”,j); x*=i=j; printf(“2:%dn”,x); x=1;y=2;z=3; x+=y+=z; printf(“3:%dn”,z+=xy?x+:y+); x=y=z=-1; +x|+y ,第2章 C语言的基本数据类型与表达式,41,2、逗号运算符: 单目

24、: , 形式: 逗号表达式1,逗号表达式2,逗号表达式n 求值规则: 从左至右依次计算各表达式的值; 优先级: 最低; 结合性:自左至右; 表达式的值:最后一个表达式的值。 如,a=3,6*a; 结果为18,但a的值为3 一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式。 如,(a=3*5,a*4),a+5; 值为20,第2章 C语言的基本数据类型与表达式,42,例如: a b y 表达式 y=a=4,b=5,a+b; 4 5 4 9 y=(a=4,b=5,a+b); 4 5 9 9 y=(a=4,b=5),a+b; 4 5 5 9 y=a=(4,b=5),a+b; 5 5 5 10

25、注意: C语言常用逗号作为分隔符, 例如: int a=3,b=4,c=5; printf(“%d,%d,%d”,(a,b,c); printf(“%d,%d,%d”,a,(a,b,c),c); 结果为3,5,5,第2章 C语言的基本数据类型与表达式,43, 形式有两种: sizeof 变量名 sizeof (类型名) 结果为整型数。,int a; float x; printf(“%d,%d”,sizeof a,sizeof x); printf(“%d,%d”,sizeof(int),sizeof(float); 以上两个printf语句结果均为2,4。,例如,第2章 C语言的基本数据类型

26、与表达式,3、求字节运算符: sizeof 作用:求得变量或某种数据类型所需的字节数。,44,分析程序执行结果(s2-3.c) #include main() int a=1; char c=a; float f=2.0; printf(“%dn”,(a+2,c+2); printf(“%dn”,(a=c); printf(“%dn”,(!(a=0),f!=0 ,第2章 C语言的基本数据类型与表达式,45, C语言允许整型、实型、字符型数据进行混合运算。 有3种转换方式:自动转换、赋值转换和强制转换。 一、类型自动转换,double float long unsigned int char,s

27、hort,第2章 C语言的基本数据类型与表达式,2.4 数据类型转换,46,int x=2;float y=1.6;char c=A; 则:c+x*y = c + x * y 65(int)+ 2(int) * 1.6(double) = 68.2(double) 二、 赋值转换 在赋值时将赋值符右边值的类型转换成与其左边变量类型一致的类型。 有下列几种情况: (1) 实型 整型(字符型):去掉小数部分;,例如,char c=68.5; printf(“%c”,c);,第2章 C语言的基本数据类型与表达式,47,(2) 整型(字符型) 实型: 补足有效位; (3)对char、int、short

28、、long、unsigned型数据: 赋值符右边数据(a位) 赋值符左边的变量(b位) 若 a=b 原样照赋; ab 截断高a-b位,送低b 位; 有符号数据 有符号变量:符号扩展; 其他情况:高a-b位全补0。 符号扩展: 符号位为0,剩余的高位补0; 符号位为1,剩余的高位补1。,ab,float f=23; 23.00000 f (7位) double f=A; 23.0000000000000 f(15位),第2章 C语言的基本数据类型与表达式,48,三、强制类型转换 形式: (类型名)表达式 强制类型转换时,得到所需类型的中间变量,原来变 量的类型不会改变。 例如: int a=2,b=5; float x=4.4; 则有: 表达式 结果 b/a 2 (float)b/a 2.5 (float)(b/a) 2.0 (int)x%a+x 4.4 (int)x%(a+x) ,第2章 C语言的基本数据类型与表达式,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1