C语言基本数据类型及运算.ppt_第1页
C语言基本数据类型及运算.ppt_第2页
C语言基本数据类型及运算.ppt_第3页
C语言基本数据类型及运算.ppt_第4页
C语言基本数据类型及运算.ppt_第5页
已阅读5页,还剩46页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、 ,unsigned 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.

3、4 符号常量 定义格式为:#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_

5、2; 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; l

6、ong 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 int a=

10、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】输出双精度数。 #include main()dou

11、ble 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,关系运算符的优先级: 低于算术运算符 前4种关系运算符(、=)的优先级相同,后

13、2种(=,!=)也相同。且前4种的优先级高于后2种。 a+bb+c 相当于 (a+b)(b+c) a=b3 (3)35=68,2.5.3 逻辑运算符和逻辑表达式,逻辑运算符是对两个关系式的逻辑值进行运算的,运算结果仍是逻辑值。三种逻辑运算符: ! 是逻辑非运算符,为单目运算 printf(%dn,x); ,(3)在表达式中包含+或-算时,很容易出错,请读者注意。 例如: i+j 应该写成:(i+)+(+j) i+j 应写成:(i+)+j (4) Turbo C 规定函数的实参求值顺序是自右向左。 例如:i 的值为3;则执行: printf(%d,%dn,i,i+); 在函数中 4,3,【例2.

14、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),sizeof(l),sizeof(f),sizeof(

15、ch),sizeof(d),运行结果为: 2,2,2,4,4,1,8,2.5.8 位运算符和位运算表达式,1位逻辑运算符 按位非运算符 按位与运算 按位或运算 按位异或运算,1位逻辑运算符位运算是一种对运算对象按二进制位进行运算。位运算不允许只操作二进制数其中的某一位,而是对整个数据按二进制位进行运算。,按位逻辑运算符的优先级由高至低排列 printf(a=%dn, a); printf(a ,运行结果为: a=-4 a int i=32767,j=-32768; printf(a1=%d,i2=%dn,i1,i2); printf(j1=%d,j2=%dn,j1,j2);,运行结果为:a1=

16、16383,i2=8191j1=-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=-78

17、9.124; 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,u,u); printf(%s,%5.3sn,COMPUTER,COMPUTER);,运行结果为: 57 57 67.85

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论