C语言第3章(数据类型和表达式).ppt
第三章第三章C数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型数值类型数值类型字符类型字符类型char整型整型浮点型浮点型短整型短整型short长整型长整型long整型整型int单精度型单精度型float双精度型双精度型double枚举类型枚举类型enum数组数组结构体结构体struct共用体共用体union空类型空类型void常量定义常量定义:在程序运行过程中,其值不能改变在程序运行过程中,其值不能改变的量。的量。常量的常量的作用作用:为变量赋值、参与表达式运算。为变量赋值、参与表达式运算。常量分类常量分类按字面形式按字面形式直接常量直接常量(字面常量)(字面常量)符号常量符号常量0、-2、1230.2、4.8、1.3e20a、g、k按数据类型按数据类型整型常量整型常量实型常量实型常量字符常量字符常量一一.常量常量自定义符号常量自定义符号常量常常量量可可以以用用符符号号表表示示,该该符符号号必必须须定定义义,符符号号串串中中用用大大写写字母。定义如下:字母。定义如下:#include#define PRICE 30 void main()int n,total;n=10;total=n*PRICE;printf(“%d”,total);优点:优点:增加可读性;增加可读性;便于程序修改;便于程序修改;例如:例如:#define NULL 0#define PI 3.14159运行结果:运行结果:300define 符号符号 字面常量字面常量符号常量定义符号常量定义符号常符号常量使用量使用注意:符号常量名用大写,变量名用小写。注意:符号常量名用大写,变量名用小写。1.变量的定义和使用规则变量的定义和使用规则变量使用规则变量使用规则:先定义,后使用先定义,后使用。变量定义的一般格式变量定义的一般格式:数据类型数据类型 变量名变量名1,变量名变量名2,变量名变量名n;目的:目的:在编译时分配内存空间在编译时分配内存空间 int sum;sum=0;sum=sum+3;决定分配字节数和数的表示范围决定分配字节数和数的表示范围,char型占型占1个个字节、字节、int型占型占4个字节、个字节、float型占型占4字节。字节。例例:int a,b,c;float ab;变量名变量名与变量值变量值不同。不同。在程序执行过程中,变量的值在程序执行过程中,变量的值可以可以由程序改变。由程序改变。内存内存sum0二二.变量变量3 2.变量的初始化变量的初始化 定义变量的同时为变量赋初值。定义变量的同时为变量赋初值。int sum=3;例:int a=2,b,c=4;float data=3.67;变量所占空间的首地址首地址称为该变量的地址变量的地址用&表示3.变量的地址变量的地址int sum=10;printf(“%xn”,&sum);内存内存sum 3一一.基本概念基本概念数据数据:数值、文字、语音、图形和图象。:数值、文字、语音、图形和图象。数据必须数字化编码数据必须数字化编码(二进制二进制),才能传送、存储和处,才能传送、存储和处理。理。二二.进位计数制进位计数制进位制进位制二进制二进制八进制八进制十进制十进制十六进制十六进制规则规则逢二进一逢二进一 逢八进一逢八进一逢十进一逢十进一 逢十六进一逢十六进一基本符号基本符号 0,10,1.70,1,90,1,.,9,A,.F形式表示形式表示BODH十进制(D)二进制(B)八进制(O)十六进制(H)0123456789101112131415011011100101110111100010011010101111001101111011110123456710111213141516170123456789abcdef三三.十进制数转换成十进制数转换成r(r=2,8,16等等)进制进制 十进制整数十进制整数 二进制二进制:采用除采用除2取余法取余法例:求(66)10的等值二进制数。2 66 余余数数 2 33 0 2 16 1 2 8 0 2 4 0 2 2 0 2 1 0 0 1 (66)10=(1000010)2十进制十进制 八进制:八进制:采用除8取余法。十进制十进制 十六进制:十六进制:采用除16取余法。(1)整数部分的转整数部分的转换换(2)小数部分的转换小数部分的转换十进制小数十进制小数 二进制二进制:采用乘采用乘2取整法取整法。求求(0.8124)10的等值二进制数。的等值二进制数。0.8 1 2 4 2 1.6 2 4 8 1 0.6 2 4 8 2 1.2 4 9 6 1 0.2 4 9 6 2 0.4 9 9 2 0 2 0.9 9 8 4 0 十进制小数十进制小数八进制数:八进制数:采用乘采用乘 8 取整的方法取整的方法。十进制小数十进制小数十六进制数:十六进制数:采用乘采用乘 16 取整的方法取整的方法。(0.8125)10 (0.1100)264(H)=0110 0100(B)6 4144(O)=001 100 100(B)1 4 42C1D(H)=0010 1100 0001 1101(B)2 C 1 D 7123(O)=111 001 010 011(B)7 1 2 3四四.八进制和十六进制数的作用八进制和十六进制数的作用 都是二进制数的简化表现。都是二进制数的简化表现。每每四位的二进制四位的二进制数对应一个十六进制数;数对应一个十六进制数;每每三位的二进制数对三位的二进制数对应一个八进制数。应一个八进制数。例例2:八进制数:八进制数(345.21)O的十进制数值为的十进制数值为(345.21)O=382+481+580+28-1+18-2 =(229.2656)D例例3:二进制数:二进制数(11001110)B的十进制数值为的十进制数值为例例4:十六进制数:十六进制数(A12)H的十进制数值为的十进制数值为(110011.10)B=125+124+121+120+12-1 =(51.5)D例例1:十进制:十进制678.34 可表示为可表示为(678.34)D=6102+7101+8100+310-1+410-2五五.不同进制间的转换不同进制间的转换 每一个字符有一个唯一的编码。称为每一个字符有一个唯一的编码。称为ASCII码码(American Standard Code for Information Interchange)常用字符有常用字符有128个,编码从个,编码从0到到127。六六.字符的表示字符的表示控制字符的控制字符的ascii码:码:032和和127;普通字符共有普通字符共有94个个。存储一个需要一个字节的空间;存储一个需要一个字节的空间;例如:字符例如:字符a 在内存中存的是在内存中存的是ASCII码的二进制为:码的二进制为:01100001;字符字符十六进制十六进制ASCII码码十进制十进制ASCII码码空格空格 20H 3209 30H39H4857AZ 41H5AH6590az 61H7AH97122一一.整型常量的表示方式整型常量的表示方式十进制整数:十进制整数:2304,-52十六进制整数:十六进制整数:(以以0 x开头开头)形如:形如:0 xddd;其中:其中:d是数字是数字09或字母或字母af例如:例如:0 x123表示十进制数表示十进制数291。八进制整数:八进制整数:(以以0开头开头)形如:形如:0dddd;其中:;其中:d是数字数字是数字数字07。例如:例如:0123 表示十进制数表示十进制数83。注意注意:15,015,0 x15 是是3个不同的整数常量。个不同的整数常量。v 基本类型基本类型:intv 根据数值的范围分为根据数值的范围分为:int,short,longv 根据有无符号根据有无符号(singed/unsigned)及范围可分为及范围可分为:类型类型简写简写字节数字节数(B)取值范围取值范围signed intint4-231 (231-1)unsigned intunsigned40 (232-1)signed short intshort2-215 (215-1)unsigned short intunsigned short20 (216-1)signed long intlong4-231 (231-1)unsinged long intunsinged long40 (232-1)二二.整型变量的数据类型分类整型变量的数据类型分类一一.实型常量表示方式实型常量表示方式(1)(1)十进制小数形式十进制小数形式十进制小数形式十进制小数形式:整数部分整数部分整数部分整数部分.小数部分小数部分小数部分小数部分 1.0 1.+12.0 -12.0 .7891.0 1.+12.0 -12.0 .789(2)(2)指数形式指数形式指数形式指数形式:尾数部分尾数部分尾数部分尾数部分 e/E e/E 指数部分指数部分指数部分指数部分作用作用:用来表示数值特别大或数值特别小的数。:用来表示数值特别大或数值特别小的数。例例1:23500000=2.35107,在,在C程序中可以表示成:程序中可以表示成:2.35e+7、2.35e7、2.35E7、0.235e8、235e5。注意注意:一个浮点数不能只包含指数部分或尾数部分;一个浮点数不能只包含指数部分或尾数部分;指指数部分必须为整数。数部分必须为整数。例如:例如:2.5e-2.0、E+5、2.6e都是错误的都是错误的。例例2:0.0000000235=2.3510-8,可,可表示为表示为:2.35e-7二二.实型变量实型变量1.实型变量的分类实型变量的分类2.实型数据的舍入误差实型数据的舍入误差#include void main()float a,b;a=123456.789e5;b=a+20;printf(“%f,%f“,a,b);v从上面的表中可从上面的表中可以看出,实型数据以看出,实型数据的有效数据是有限的有效数据是有限的,有效数据以外的,有效数据以外的数字将被舍去。的数字将被舍去。因此会产生误差。因此会产生误差。12345678900.012345678920.012345678848.000000,12345678868.000000double15167有效数字有效数字-1.7*10-308 1.7*103088double-3.4*10-38 3.4*10384float取值范围取值范围字节数字节数(B)类类 型型3.实型常量的类型实型常量的类型程序中出现的实型常量都看作双精度数。程序中出现的实型常量都看作双精度数。若要系统按若要系统按float类型处理,则在实型常量的类型处理,则在实型常量的后面加入字母后面加入字母f或或F。3.14f