《c语言第3章数据类型及表达式.ppt》由会员分享,可在线阅读,更多相关《c语言第3章数据类型及表达式.ppt(27页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3 3章章 数据类型及表达式数据类型及表达式 3.1 3.1 标识符标识符 标识符标识符定义:程序中用于标识常量、变量、函数的字符序列定义:程序中用于标识常量、变量、函数的字符序列组成组成:只能由字母、数字、下划线组成,第一个字母必须是字母或下划线只能由字母、数字、下划线组成,第一个字母必须是字母或下划线大小写有区别大小写有区别不能使用不能使用C C语言的关键字语言的关键字规则:规则:见名知意见名知意不宜混淆不宜混淆请指出下列标识符的正误:请指出下列标识符的正误:mainmain、countcount、!count!count、newnew、5abc5abc、ifif、dodo、L_5L_
2、5、whowho、a123a123、_A_A、_123_123、c#c#、r-3r-3、printfprintf3.2 3.2 数据类型数据类型C C语言的基本数据类型有语言的基本数据类型有4 4种:种:数据数据类类型型长长度度取取值值范范围围intint(整型整型)floatfloat(单单精度浮点型精度浮点型)doubledouble(双精度浮点型双精度浮点型)charchar(字符型字符型)2 2ByteByte16bit16bit4 4Byte=32bitByte=32bit8 8Byte=64bitByte=64bit1 1Byte=8bitByte=8bit-32768-32768
3、3276732767-3.4x10-3.4x10-38-383.4x103.4x103838-1.7x10-1.7x10-308-3081.7x101.7x10308308-128-128127127还有还有4 4种构造类型:种构造类型:数组、结构体数组、结构体(struct)(struct)、共同体、共同体(union)(union)、枚举、枚举(enum)(enum)3.3 3.3 常量常量常量常量定义定义:程序运行时值不能改变的量,即常数。程序运行时值不能改变的量,即常数。分类分类:符号常量符号常量:用标识符表示具体值用标识符表示具体值定义格式:定义格式:一般用大写字母一般用大写字母直接
4、常量直接常量:直接写出具体值直接写出具体值整型常量整型常量实型常量实型常量字符常量字符常量字符串常量字符串常量#define#define 标识符标识符 常量值常量值语言规定:语言规定:所有变量在使用前必须先定义所有变量在使用前必须先定义3.4 3.4 变量变量变量变量是指程序执行过程中,其值可以改变的量。变量是指程序执行过程中,其值可以改变的量。变量有一个名字,称为有一个名字,称为变量名变量名,用标识符表示。,用标识符表示。变量的定义格式:变量的定义格式:如:如:int int a,b,c;a,b,c;float float x,y,z;x,y,z;charchar ch;ch;变量的定义一
5、般写在函数开头变量的定义一般写在函数开头,同时定义多个变量用逗同时定义多个变量用逗号隔开。号隔开。类型名类型名变量名,变量名,变量名,变量名,.,变量名,变量名;3.5 3.5 整型数据整型数据3.5.1 3.5.1 整型常量整型常量三种表示形式:三种表示形式:十进制整数:由数字十进制整数:由数字0 09 9和正负号表示。和正负号表示。如如123,-456,0123,-456,0八进制整数:由数字八进制整数:由数字0 0开头开头,后跟数字后跟数字0 07 7表示。表示。如如0 0123,123,0 01111十六进制整数:由十六进制整数:由0 x0 x或或0X0X开头开头,后跟后跟0 09,a
6、9,af,Af,AF F表表示。示。如如0 x0 x123,123,0X0Xffff长整型常量长整型常量:789789L L、017017L L、0 x12a0 x12aL L(用用l l或或L L引出引出)3.5 3.5 整型数据整型数据3.5.2 3.5.2 整型变量整型变量整型变量用于存放整型数据。根据数值的表示范围整型可整型变量用于存放整型数据。根据数值的表示范围整型可以为整型(以为整型(intint)、短整型()、短整型(shortshort)、长整型()、长整型(longlong)三)三种。种。这三种整型都默认为有符号型(这三种整型都默认为有符号型(signedsigned),有符
7、号型即可),有符号型即可以是正数、负数和以是正数、负数和0 0。也可以根据需要,将整型指定为无。也可以根据需要,将整型指定为无符号型(符号型(unsignedunsigned),此时整型变量只能存放非负数。),此时整型变量只能存放非负数。上面提到的上面提到的shortshort、longlong、signedsigned、unsignedunsigned都是一些类都是一些类型修饰符,用于补充说明变量的特性型修饰符,用于补充说明变量的特性3.6 3.6 浮点型数据浮点型数据 3.6.1 3.6.1 浮点型常量浮点型常量两种表示形式:两种表示形式:十进制小数形式:十进制小数形式:必须带小数点必须带
8、小数点如如0.123,.123,123.0,0.0,123.0.123,.123,123.0,0.0,123.指数形式:指数形式:e e或或E E之前必须有数字;指数必须为整数之前必须有数字;指数必须为整数如如12.312.3e e3,1233,123E E2,1.232,1.23e e4,4,e-5e-5,实型常量的类型细分:实型常量的类型细分:默认为默认为doubledouble型型,例如例如3.143.14就是就是doubledouble类型类型后面加后面加f f或或F F认为是认为是floatfloat型型,例如例如3.14f3.14f就是就是floatfloat类型类型3.6 3.6
9、 浮点型数据浮点型数据3.6.2 3.6.2 浮点型变量浮点型变量浮点型分为单精度型(浮点型分为单精度型(floatfloat)和双精度型()和双精度型(doubledouble)两)两种。种。floatfloat型数据占用型数据占用4 4个字节(个字节(32bits32bits)存储单元,提供的有)存储单元,提供的有效数字是效数字是6 67 7位;位;doubledouble型数据占用型数据占用8 8个字节(个字节(64bits64bits)存储单元,提供的)存储单元,提供的有效数字是有效数字是15161516位。位。3.7 3.7 字符型数据字符型数据3.7.1 3.7.1 字符常量字符常
10、量定义:定义:用用单引号单引号括起来的括起来的单个字符单个字符或或转义字符转义字符如如:a a、?、A A、n n、”转义字符转义字符:反斜线反斜线 后跟一个字符或一个代码值,用于表示特殊符号。后跟一个字符或一个代码值,用于表示特殊符号。详情见表详情见表2-42-4字符常量在存储器中的值就是其字符常量在存储器中的值就是其ASCIIASCII码值码值#include#include mainmain()()printfprintf(101 x42 Cn);(101 x42 Cn);printfprintf(I say:How are you?n);(I say:How are you?n);pr
11、intfprintf(C Programn);(C Programn);printfprintf(Turbo C);(Turbo C);运行结果:运行结果:(屏幕显示屏幕显示)A B CA B CI say:”How are you?”I say:”How are you?”C ProgramC ProgramTurbo CTurbo C#include#include mainmain()()printfprintf(“Yb=n”);(“Yb=n”);运行结果:运行结果:屏幕显示:屏幕显示:=3.7 3.7 字符型数据字符型数据3.7.2 3.7.2 字符串常量字符串常量字符串常量字符串常量
12、定义:定义:用用双引号双引号括起来的括起来的字符序列字符序列如如:“hello,world”“A”“”“hello,world”“A”“”存储存储:每个字符串尾自动加个每个字符串尾自动加个00作为字符串结束标志作为字符串结束标志注意注意:字符常量字符常量和和字符串常量字符串常量是两个不同的概念是两个不同的概念charchar ch;ch;ch=“A”;/ch=“A”;/错错误误charchar ch;ch;ch=A;ch=A;h he el ll lo o,w wo or rl ld d00A A00003.7 3.7 字符型数据字符型数据3.7.3 3.7.3 字符型变量字符型变量字符型变量
13、在内存中占一个字节,由于存储的是字符的二字符型变量在内存中占一个字节,由于存储的是字符的二进制进制ASCIIASCII码,与整型数据存储方式类似,字符型数据和码,与整型数据存储方式类似,字符型数据和整型数据可以相互运算。整型数据可以相互运算。注意,字符串常量不允许赋值给字符型变量,注意,字符串常量不允许赋值给字符型变量,C C语言也没语言也没有专门的字符串变量。要在内存中存取字符串,只能使用有专门的字符串变量。要在内存中存取字符串,只能使用数组或指针。数组或指针。3.8 3.8 变量的初始化变量的初始化C C语言允许在定义变量时直接对其赋值语言允许在定义变量时直接对其赋值mainmain()(
14、)intint x,y;x,y;x=10;y=20;x=10;y=20;mainmain()()intint x=10,y=20;x=10,y=20;3.9 3.9 运算符和表达式运算符和表达式3.9.1 3.9.1 算术表达式算术表达式1.1.算术运算符算术运算符 (1 1)+加法运算符,或表示正值,如加法运算符,或表示正值,如3+23+2,+1+1(2 2)-减法运算符,或表示负值,如减法运算符,或表示负值,如3-23-2,-8-8(3 3)*乘法运算符,如乘法运算符,如4*54*5(4 4)/除法运算符,如除法运算符,如5/35/3(5 5)%求余运算符,如求余运算符,如5%35%3C
15、C语言规定:语言规定:两个整数相除的结果整数,小数部分被舍去。两个整数相除的结果整数,小数部分被舍去。例如:例如:7/37/3的结果值是的结果值是2 2不是不是2.5,2.5,而而7.0/37.0/3的结果是的结果是2.52.5。%运算符只能用于整数相除求余,运算结果的符号与被除数运算符只能用于整数相除求余,运算结果的符号与被除数相同。相同。除除#include#include mainmain()()floatfloat div;div;div=1/2;div=1/2;printfprintf(“%fn”,div);(“%fn”,div);当除号两边都是整型量时,叫做当除号两边都是整型量时,
16、叫做整除整除,运算结果只保,运算结果只保留整数部分。留整数部分。当除号任何一边有实型量时,运算结果是实数。当除号任何一边有实型量时,运算结果是实数。#include#include mainmain()()floatfloat div;div;div=1./2;div=1./2;printfprintf(“%fn”,div);(“%fn”,div);运行结果:运行结果:0.0000000.000000运行结果:运行结果:0.5000000.500000余余#include#include mainmain()()printf printf(%dn,3%5);(%dn,3%5);printfpr
17、intf(%dn,5%3);(%dn,5%3);printfprintf(%dn,3%-5);(%dn,3%-5);printfprintf(%dn,5%-3);(%dn,5%-3);printfprintf(%dn,-3%5);(%dn,-3%5);printfprintf(%dn,-5%3);(%dn,-5%3);3=0*5 +3 3=0*5 +33 32 23 32 2-3-3-2-2 5=1*3 +2 5=1*3 +2 3=0*-5+3 3=0*-5+3 5=-1*-3+2 5=-1*-3+2-3=0*5 -3-3=0*5 -3-5=-1*3 -2-5=-1*3 -2%要求两侧均为整型
18、数据要求两侧均为整型数据5.5%35.5%3余余#include#include mainmain()()intint num;num;scanfscanf(“%d”,&num);(“%d”,&num);num=10*(num%10)+(num/10);num=10*(num%10)+(num/10);printfprintf(“%d”,num);(“%d”,num);#include#include mainmain()()intint num,i,j;num,i,j;scanfscanf(“%d”,&num);(“%d”,&num);i=num/10;i=num/10;j=num%10;j
19、=num%10;num=10*j+i;num=10*j+i;printfprintf(“%d”,num);(“%d”,num);此程序把输入的两位此程序把输入的两位整数进行十位和个位整数进行十位和个位的互换。例如:输入的互换。例如:输入2525,输出,输出5252。3.9 3.9 运算符和表达式运算符和表达式3 3自增、自减运算符自增、自减运算符自增、自减运算符的作用是将自增、自减运算符的作用是将变量变量的值增加的值增加1 1或者减少或者减少1 1。自增运算符是自增运算符是自减运算符是自减运算符是只能对变量使用只能对变量使用,不能用于常量和表达式不能用于常量和表达式作前缀时是先运算、后引用作前
20、缀时是先运算、后引用作后缀时是先引用、后运算作后缀时是先引用、后运算i=j=3;i=j=3;x=i+;x=i+;y=+j;y=+j;i:4i:4j:4j:4x:3x:3y:4y:4建议:建议:+和和-语句如非特语句如非特殊需要,请单独一行使用殊需要,请单独一行使用如如:x+;-k;:x+;-k;3.9 3.9 运算符和表达式运算符和表达式3.9.2 3.9.2 赋值表达式赋值表达式简单赋值运算符简单赋值运算符符号:符号:=格式:变量标识符格式:变量标识符=表达式表达式功能:将一个数据(常量或表达式)赋给一个变量功能:将一个数据(常量或表达式)赋给一个变量复合赋值运算符复合赋值运算符种类:种类:
21、+=-=*=/=%=+=-=*=/=%=&=|=&=|=含义:含义:exp1 op=exp2 exp1 op=exp2 exp1=exp1 op exp2exp1=exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3v结合方向:自右向左结合方向:自右向左v赋值语句左侧必须是变量,赋值语句左侧必须是变量,不能是常量或表达式不能是常量或表达式v赋值的转换规则赋值的转换规则:使赋值号右边表达式值自动转换成使赋值号右边表达式值自动转换成 其左边变量的类型其左边变量的类型赋值运算符和表达式赋值运算符和表达式a=3;a=3;b=4;b=4;a=b;a=b;3=x-2*
22、y;3=x-2*y;a+b=3;a+b=3;floatfloat f;f;intint i;i;i=10;i=10;f=i;f=i;则则f=10.0f=10.0intint i;i;i=2.56;i=2.56;则则i=2i=2v赋值表达式的值与变量值相等赋值表达式的值与变量值相等,且可嵌套且可嵌套例例:a=b=c=5:a=b=c=5 a=(b=5)a=(b=5)a=5+(c=6)a=5+(c=6)a=(b=4)+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)a=(b=10)/(c=2)/表达式值为表达式值为5 5,a,b,ca,b,c值为值为5 5/b=5;a=5/b=5;a
23、=5/表达式值表达式值1111,c=6,a=11c=6,a=11/表达式值表达式值1010,a=10,b=4,c=6a=10,b=4,c=6赋值运算符和表达式赋值运算符和表达式例例:a=12;:a=12;a+=a-=a*a a+=a-=a*a例例:int a=2;:int a=2;a%=4-1;a%=4-1;a+=a*=a-=a*=3;a+=a*=a-=a*=3;/a=-264/a=-264 等价于等价于a=a+(a=a-(a*a)a=a+(a=a-(a*a)/a=0/a=0 等价于等价于a=a+(a=a*(a=a-(a=a*3)a=a+(a=a*(a=a-(a=a*3)3.9 3.9 运算符
24、和表达式运算符和表达式3.9.3 3.9.3 逗号运算符和表达式逗号运算符和表达式 用逗号将多个表达式连接起来,又称为用逗号将多个表达式连接起来,又称为“顺序求值运算符顺序求值运算符”。整个表达式的值是最后那个逗号之后表达式的值。整个表达式的值是最后那个逗号之后表达式的值请求下列表达式的值:请求下列表达式的值:3+43+4,6 6a=(a=3,6*3)a=(a=3,6*3)a=a=3,6*3a=a=3,6*3a=3,a+=2,a+3a=3,a+=2,a+3a=3*5,a*4a=3*5,a*4(a=3*5,a*4),a+5(a=3*5,a*4),a+56 6a=18 18a=18 18a=3 1
25、8a=3 18a=5 8a=5 8a=15 60a=15 60a=15 20a=15 203.10 3.10 数据类型转换数据类型转换3.10.1 3.10.1 隐式转换隐式转换整型、实型和字符型数据之间可以混合运算。例如:整型、实型和字符型数据之间可以混合运算。例如:10+a+1.5-8765.1234*b10+a+1.5-8765.1234*b 不同数据类型之间运算会进行自动类型转换,规则如下:不同数据类型之间运算会进行自动类型转换,规则如下:int char,shortint char,shortunsignedunsigned long long double float double
26、 float低低高高必定的转换必定的转换运算对象类型不运算对象类型不同时转换的方向同时转换的方向char ch;char ch;int i;int i;float f;float f;double d;double d;ch/i +f*d -(f+i)ch/i +f*d -(f+i)doubledoubleintintdoubledoubledoubledouble doubledoubleintintdoubledoubledoubledoubledoubledouble 10+a+1.5-8765.1234*b 10+a+1.5-8765.1234*b 进行进行 10+a 10+a 的运算
27、:将的运算:将 a a 转换成整数转换成整数9797,得到和为,得到和为107107。进行进行 107+1.5 107+1.5 的运算:将的运算:将 107 107 转换成转换成doubledouble型,得到和为型,得到和为108.500000108.500000。进行进行 8765.1234*b 8765.1234*b 的运算:将的运算:将 b b 转转换成换成doubledouble型数型数98.00000098.000000,再与,再与8765.12348765.1234相相乘。乘。把之前得到的把之前得到的108.500000108.500000减去减去8765.1234*b8765.
28、1234*b的值,就完成了整个表达式的值,就完成了整个表达式的求值。的求值。3.10 3.10 数据类型转换数据类型转换3.10.2 3.10.2 强制类型转换强制类型转换一般形式:一般形式:(类型名)(类型名)(表达式)(表达式)例例 (int)(int)(x+y)(x+y)(int)(int)x x+y+y (double)(double)(3/2)(3/2)(int)(int)3.63.6 说明:强制转换得到所需类型的中间变量,原变量类型、说明:强制转换得到所需类型的中间变量,原变量类型、变量值保持不变变量值保持不变 较高类型向较低类型较高类型向较低类型转换时可能发生转换时可能发生精度损失问题精度损失问题#include main()float x;int i;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);结果:结果:x=3.600000,i=3