第2章C语言基本数据类型及运算.ppt

上传人:本田雅阁 文档编号:2252270 上传时间:2019-03-11 格式:PPT 页数:51 大小:347.51KB
返回 下载 相关 举报
第2章C语言基本数据类型及运算.ppt_第1页
第1页 / 共51页
第2章C语言基本数据类型及运算.ppt_第2页
第2页 / 共51页
第2章C语言基本数据类型及运算.ppt_第3页
第3页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

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

1、第2章 C语言基本数据类型及运算,2.1 C语言的数据类型,2.2 常量,常量是程序中其值不发生变化的数据。 2.2.1 整型常量 进 制 数 表 示 方 式 举 例 八进制整型 由数字0开头 034,065,057 十进制整型 如同数学中的数字 123,-78,90 十六进制整型 由0X或0x开头 0x23,0Xff,0xac p31,限制在本区间使用,1基本整型常量和短整型-3276832767。 2长整型常量-21474836482147483647,整数后面加上字母l(或 L)。 3无符号整型常量表示的数据全部是正数,没有符号位。 int , short int,long int ,u

2、nsigned int unsigned short int,unsigned long int,实型数又称实数或浮点数,只用在十进制数中。 表示法如下: 3.14 .9999 -3.14159 0.3e05 6.89E-5 9.99e+16 6.89E-5 表示的是数学算式中的:6.8910-5。 类 型 二进制位数 有效数字 数 值 范 围 Float 32 7 10-381038 Double 64 1516 10-30810308 p31,2.2.2 实型常量,2.2.3 字符常量,字符常量是用单引号括起来的一个字符,它在计算机存储中占一个字节。 x,a,A,b,$,# 2.2.4 符

3、号常量 定义格式为:#define 符号常量 字符串 #define PI 3.14159 #define NULL 0 #define EOF 1 定义后当一般常量使用 p32,【例2.1】求一个圆柱体体积,用符号常量代替。 #include #define PI 3.14159 main() float r,h,v; scanf(“%f,%f“, ,2.2.5 字符串常量,字符串常量是用一对双引号括起来的零个或多个字符序列。 “I am a student“ ,”x“ ,” 都为字符串常量。 在内存中存储时,设定一个结束符0。 字符串的长度应为实际长度。,注意: 0和0不同,0是编码为0的

4、字符, 而0则是数字 0 所对应的字符 在字符串中有转义字符。 例如:“ab072cdef” 长度为7 ; “n33abcd” 长度为8,2.3 变量,变量是指在程序运行过程中其值可以发生变化的量。 2.3.1变量的数据类型及其定义 1.变量的数据类型(基本) 字符型、整型、单精度实型、双精度实型,它们分别用关键字char、int、float、double进行定义。另外,还有无符号整型和无值型,它们分别用关键字unsigned和void进行定义。 见表2,表3 p33,数据类型 变量列表; 系统默认类型int int a, b, c; char ch, str; double f_1, f_2

5、; float x, y, z, _w1, _w2; unsigned int u_1, u_2; long int g1, g2;,2.3.2 变量的存储类型及定义,变量的存储类型 CPU寄存器 (register) 内存 (内存中又分为两个区域,即为静态存储区和动态存储区。) 2. 变量的存储类型的定义 存储类型 数据类型 变量列表; 系统默认类型修饰为auto 类型(自动型) p34,(1) 自动变量 int a, b, c; char ch, str; double f_1, f_2; float x, y, z, _w1, _w2; unsigned int u_1, u_2; lo

6、ng int g1, g2;,【例2.2】定义自动整型和字符型变量。 #include main() auto char c1,c2; auto int i1,i2; scanf(“%d,%d“, 运行时输入:97,98 运行结果为:a,b 97,98,寄存器型变量的数据是存放在CPU 的通用寄存器中,可不通过内存来直接访问。Turboc C允许定义的寄存器型变量一般以2个为宜。动态管理使用. 【例2.3】函数内部定义寄存器变量。 #include main() register b; b=3; printf(“b=%d“,b); ,运行结果为: b=3,(3) 静态变量,静态变量存放在静态内

7、存数据区中 特点:静态变量在变量定义时就分配了固定的内存单元并根据所定义的数据类型存入默认值,在程序运行中一直占用内存单元不释放,直到程序运行结果后。 分类:静态变量又分为静态局部变量和静态全局变量。 静态局部变量 在函数或复合语句中定义的变量为静态变量称为静态局部变量. 特点:该变量在其函数中或复合语句中有效。静态局部变量所在的函数无论调用多少次,静态局部变量赋值语句只执行一次,但能够保留住函数多次调用的中间结果。p35,【例2.4】静态局部变量的使用 f() static int a=1; auto b=0; a=a+1; b=b+1; printf(“a=%d,b=%dn“,a,b);

8、,运行结果为: a=2,b=1 a=3,b=1 a=4,b=1,main() f(); f(); f(); ,静态全局变量,【例2.5】有一程序文件f1.c,在程序中使用了静态全局变量。 #include static int a=1; main() auto b=0; a=a+1; b=b+1; printf(“na=%d,b=%dn“,a,b); ,运行结果为: a=2,b=1,(4) 外部变量,Tubro C系统规定在某一个源程序中定义的全局变量,其它的多个文件可以使用,这就是所说的程序间的数据交流。 定义方法:使用关键字“extern”定义的变量称为外部变量(系统默认存储类型),在函数

9、体之外定义。 注意:如果全局变量如果不加“static”限制,都是外部变量。 外部和内部变量同名的处理: 外部变量如果与局部变量同名,在局部范围内局部变量优先。(具体应用见第5章)p37,变量定义可以出现在程序中的三个地方: 在函数的内部 在函数的参数中 在所有函数的外部 2.3.3 变量的初始化 存储类型符 数据类型符 变量1=初值1,变量2=初值2 ; static int a=1; auto int a=0,b=-3; p37,2.3.4 基本数据类型的使用 1. 整型变量 【例2.6】内存单元中同一个数据按有符号和无符号格式输出的情况。 #include main() unsigned

10、 int a=65535; int b=a; printf(“a=%un“,a); printf(“b=%dn“,b); printf(“a=%d,%o,%x,%un“,a,a,a,a); p37,运行结果为: a=65535 b=-1 a=-1,177777,ffff,65535,【例2.7】超出基本整型数据的最大允许值。 #include main() int a,b; a=32767; b=32768; printf(“%d,%d“,a,b); p38,实型变量分为单精度(float型)、双精度(double型)和长双精度型(long double型) 【例2.8】输出双精度数。 #in

11、clude main()double x,y; x=1111111111111.111111111; y=2222222222222.222222222; printf(“%fn“,x+y); ,实型变量,字符型变量,字符型变量在计算机内存储的是其字符对应的ASCII码值. 例如:char c1=A; 例2.9】输入英文字母A,转换成小写字母输出。 #include main() char c1,c2; c1=getchar( ) putchar(c1); c2=c1+32; putchar(c2); ,2.5 运算符及表达式,p40,2.4.1 算术运算符和算术表达式,算术运算包括加、减、乘

12、、除和求余运算。分别使用:+ 、- 、* 、/ 、% 表示。 见 P41 【例2.10】求两个整数相除的余数。 #include main() printf(“%d,%d,%d,%d“,7%3,7%(-3),-7%3,-7%(-3); ,2.5.2 关系运算符和关系表达式,关系运算是用来进行两个操作对象的比较的运算,关系运算的运算结果是一个逻辑值,即“真”值或“假”值。如果结果为“真”值,用数字“1”来表示,如果结果为“假”值,则用数字“0”表示。p41 语言提供6种关系运算符: (大于) =(大于或等于) =(等于) !=(不等于) 见附录2p251,关系运算符的优先级: 低于算术运算符 前

13、4种关系运算符(、=)的优先级相同,后2种(=,!=)也相同。且前4种的优先级高于后2种。 a+bb+c 相当于 (a+b)(b+c) a=b3 (3)35=68,2.5.3 逻辑运算符和逻辑表达式,逻辑运算符是对两个关系式的逻辑值进行运算的,运算结果仍是逻辑值。三种逻辑运算符: ! 是逻辑非运算符,为单目运算 & 是逻辑与运算符,为双目运算 | 是逻辑或运算符,为双目运算 逻辑非“!”的优先级最高,逻辑与“&”次之,逻辑或“|”最低。p42,1 逻辑非表达式 逻辑形式: !(表达式) !a !(x+y) x+!y 2 逻辑与表达式逻辑表达式形式为: (表达式)&(表达式) 计算法则:前边表达

14、式为0时,第2个表达式不计算 a &b (x+y)&(a*b/c) (ab)&(cb)|(cd),为什么使用逻辑表达式: 使用关系运算符和逻辑运算符,能够描述一个复杂的条件。 例如,判断一个年份year是否为闰年,可用以下逻辑表达式来进行判断: (year%4=0&year%100!=0)|year%400=0 同一问题可以从另一角度描述,比如该问题也可以从另一角度判断,非闰年的判别条件为: !(year%4=0&year%100!=0)|year%400=0)或 (year%4!=0|year%100=0)&year%400!=0,2.5.4 赋值运算符和赋值表达式,1赋值运算符 赋值运算符

15、分两类 “=” 基本赋值运算符 += -= *= /= %= = = a=1 , b=5*PI, c=a,(2)复合赋值运算符,+= -= *= /= %= 复合赋值运算表达式格式: = 例如: a-=b-5 相当于:a=a-b-5 a%=b+3 相当于:a=a%b+3 p45,2.5.5 逗号运算符和逗号表达式,表达式1,表达式2,表达式n 逗号表达式是一个求值运算符。计算时顺序为分别求解每一个表达式,整个表达式的值是最右边表达式的值。 a=8+4,a/2 a=12,6 表达式的结果:6 a=12 p45,2.5.6 变量的自增,自减(+,-)运算符,变量+ + + 变量 变量 - - -

16、- 变量 p46 a+ +a a- - a 使用“+ +”和“- -”运算时需要注意以下问题: (1)+和- -运算只能用于变量,而不能用于常量和表达式。 (2)+和- -运算是单目运算符,运算方向是自右向左。 【例2.11】 变量的自增自减运算 main() int x=10 printf(“%dn“,-x+); printf(“%dn“,x); ,(3)在表达式中包含+或-算时,很容易出错,请读者注意。 例如: i+j 应该写成:(i+)+(+j) i+j 应写成:(i+)+j (4) Turbo C 规定函数的实参求值顺序是自右向左。 例如:i 的值为3;则执行: printf(“%d,

17、%dn“,i,i+); 在函数中 4,3,【例2.12】观察中间变量j的值。 main() int i=3,j; j=i+; printf(“i=%d,j=%dn“,i,j); 2.5.7长度运算符 sizeof运算符的格式为: sizeof(类型说明符) sizeof (表达式),【例2.13】长度运算符的使用 #include main() int i; short s; unsigned u; long int l; float f; char ch; double d; printf(“%d,%d,%d,%d,%d,%d,%d“,sizeof(i),sizeof(s),sizeof(u

18、),sizeof(l),sizeof(f),sizeof(ch),sizeof(d),运行结果为: 2,2,2,4,4,1,8,2.5.8 位运算符和位运算表达式,1位逻辑运算符 按位非运算符 按位与运算 按位或运算 按位异或运算,1位逻辑运算符 位运算是一种对运算对象按二进制位进行运算。位运算不允许只操作二进制数其中的某一位,而是对整个数据按二进制位进行运算。,按位逻辑运算符的优先级由高至低排列 & | (1) 按位非运算符 “”是单目运算符,它的优先级比非单目的算术运算符、关系运算符、逻辑运算符和其它位运算符都高。按位非运算规则是:将二进制的数字0变1,1变0。 例如:设:a=000000

19、11 则:a=11111100 p48,(2) 按位与运算 按位与运算的规则是:两个操作对象均为1时,则该位结果为1,否则为0。 例如: 设:a和b均为无符号整型变量, 且a=3 (00000011),b=5 (00000101),进行按位与运算: 00000011 (a=3) (&) 00000101 (b=5) 00000001,(3) 按位或运算 按位或运算的规则是:两个操作对象相异时,则该位结果为1,相同时否则为0。 例如:设:a和b均为无符号整型变量,且a=3 (00000011), b=5 (00000101),进行按位或: 00000011 (a=3) (|) 00000101

20、(b=5) 00000110,(4) 按位异或运算 按位或运算的规则是:两个操作对象有一个为1时,则该位结果为1,否则为0。 例如:设:a和b均为无符号整型变量,且a=3 (00000011), b=5 (00000101),进行按位或: 00000011 (a=3) (|) 00000101 (b=5) 00000110,【例2.14】设a和b均为无符号整型变量,且a=3(取低字节为00000011), b=5 (取低字节为00000101),进行按位非、按位与、按位或、按位异或运算。 #include main() int a=3,b=5; printf(“a=%dn“, a); prin

21、tf(“a ,运行结果为: a=-4 a&b=1 a|b=7 ab=6,2. 位移运算符 p49 位移运算符是将以二进制数据形式表现的字符型或整型变量中的每一位,左移或右移若干位. 位移运算符有两种:分别是“”,均为双目运算。 位移运算符的表达式形式是:表达式1表达式2 其中,在格式中的表达式1是位移的对象,即二进制数,表达式2是移动的二进制位数,用十进制数表示。 用途:(1)移位运算可用于对外部设备的输入进行译码,也可用于读状态信息。按位运算符常用于加密程序。 (2)移位运算还可以用非常快的速度实现整数乘法和除法运算,左移1位实现乘2运算,右移1位实现除2运算。,(1)左移运算 运算法则:左

22、移运算是内存单元中的二进制数整体向左移动。左移1位相当于该数乘以2. 规则:高位溢出,低位补0。 (2)右移运算 运算法则:右移运算是内存单元中的二进制数整体向右移动。右移1位相当于该数除以2. 规则:低位丢弃,补高位。 补位规则: 移出的空位若是0则全补0,若是1则全部补1. p50,【例2.15】左移、右移运算举例。 #include main() unsigned a=64,b=127; int i=32767,j=-32768; printf(“a1=%d,i2=%dn“,i1,i2); printf(“j1=%d,j2=%dn“,j1,j2);,运行结果为: a1=16383,i2=

23、8191 j1=-16384,j2=-8192,2.5.9 混合运算和类型转换,1. 自动类型转换 由系统自动完成并向精度高的类型转换。例如表达式: 10+a+1.5-5678.444*b 2. 强制类型转换 强制类型转换将表达式的值转换为另一种特定类型。 格式:(类型)表达式 例如: float x=3.6; int y=(int)x ; 结果分析:变量x 的内存单元中存放的还是实数3.6, 而变量y只取x的整数部分。,2.5.10 综合运算举例 【例2.16】输出各种类型数据。 #include main() int a=5,b=7;float x=67.8564,y=-789.124;

24、char c=A;long n=1234567;unsigned u=65535; printf(“%d%dn“,a,b);printf(“%3d%3dn“,a,b); printf(“%f,%fn“,x,y);printf(“%-10f,%-10fn“,x,y); printf(“%8.2f,%8.2f,%.4f,%.4f,%3f,%3fn“,x,y,x,y,x,y); printf(“%e,%10.2en“,x,y); printf(“%c,%d,%o,%xn“,c,c,c,c); printf(“%ld,%lo,%xn“,n,n,n); printf(“%u,%o,%x,%dn“,u,u

25、,u,u); printf(“%s,%5.3sn“,“COMPUTER“,“COMPUTER“);,运行结果为: 57 57 67.856400,-789.124023 67.856400 ,-789.124023 67.86, -789.12,67.8564,-789.1240,67.856400,-789.124023 6.785640e+001,-7.89e+002 A,65,101,41 1234567,4553207,12d687 65535,177777,ffff,65535 COMPUTER, COM,作 业,阅读教材后,将课后习题一、二作在作业本上。 上机调试第三题,观察数据类型,并存在磁盘上。 实验课任务: 完成实验2、实验3,将运行结果记录在书上。,

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

当前位置:首页 > 其他


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