C语言课件第3章 数据类型及表达式_第1页
C语言课件第3章 数据类型及表达式_第2页
C语言课件第3章 数据类型及表达式_第3页
C语言课件第3章 数据类型及表达式_第4页
C语言课件第3章 数据类型及表达式_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、C o m p a n yLOGO第第3章章 数据类型及表达式数据类型及表达式 CompanyL主要内容主要内容2 常量常量3 常量常量 常量常量 常量常量标识符标识符1数据类型数据类型计算机基础 教学实验中心 变量变量4 运算符和表达式运算符和表达式5 变量变量4CompanyLogo3.1 标识符标识符 v标识符标识符u 组成组成: 共共3232个关键字,每个都代表着某一个关键字,每个都代表着某一固定含义固定含义。有有特定含义特定含义的标识符,也可用于其他用的标识符,也可用于其他用途。如途。如C C语言中提供的库函数名字和预编译处理命令。语言中提供的库函数名字和预编译处理命令。程序设计时用

2、户程序设计时用户自己命名自己命名的标识符。包括的标识符。包括常量、变量、函数名、语句标号、类型定义符等。常量、变量、函数名、语句标号、类型定义符等。u 用户标识符命名规则:用户标识符命名规则: 只能由字母、数字、下划线组成,第一个只能由字母、数字、下划线组成,第一个字符字符必须是字母或必须是字母或下划线下划线 大小写有区别大小写有区别 不能使用不能使用C语言的语言的关键字关键字计算机基础 教学实验中心取名最好取名最好见名知意!见名知意!CompanyLogo例例:请判断下列用户标识符是否合法。请判断下列用户标识符是否合法。U 2ab3 -abc abc_123 d+b_numI love yo

3、uint 合法合法合法合法不合法,应以字母打头不合法,应以字母打头不合法,第一个字符应为下划线不合法,第一个字符应为下划线“_”_”合法合法不合法,出现不合法,出现“+”+”不合法,出现空格不合法,出现空格不合法,与关键字同名不合法,与关键字同名CompanyLogo3.2 数据类型数据类型vC语言的基本数据类型有语言的基本数据类型有4种:种:数据类型数据类型长度长度取值范围取值范围intint( (整型整型) )floatfloat( (单精度浮点型单精度浮点型) )doubledouble( (双精度浮点型双精度浮点型) )charchar( (字符型字符型) )4 4ByteByte32

4、bit32bit4 4Byte=32bitByte=32bit8 8Byte=64bitByte=64bit1 1Byte=8bitByte=8bit-2147483648-214748364821474836472147483647- -3.43.41010-38-383.43.410103838- -1.71.71010-308-3081.71.71010308308- -128128127127构造类型构造类型4 4种:种:数组、结构体数组、结构体( (structstruct) )、共同体、共同体(union)(union)、枚举、枚举( (enumenum) )计算机基础 教学实验中

5、心指针及空类型指针及空类型CompanyLogo3.3 常量常量常量常量v 定义定义:程序运行时值不能改变的量,即常数。程序运行时值不能改变的量,即常数。v 分类分类:直接常量直接常量:直接写出具体值直接写出具体值 整型常量整型常量 实型常量实型常量 字符常量字符常量 字符串常量字符串常量符号常量符号常量:用标识符表示具体值用标识符表示具体值 定义格式:定义格式: 一般用大写字母一般用大写字母#define#define 标识符标识符 常量常量值值计算机基础 教学实验中心CompanyLogo例例:已知圆半径为已知圆半径为2.5,求圆的面积与周长。,求圆的面积与周长。#define PI 3.

6、1415926#include void main( ) float r,a,c; r=2.5; a=PI*r*r; c=2*PI*r; printf(“r=%f,a=%f;c=%fn”,r,a,c);CompanyLogo语言规定:语言规定:所有变量在使用前必须先定义所有变量在使用前必须先定义3.4 变量变量变量变量是指程序执行过程中,其值可以改变的量。变量是指程序执行过程中,其值可以改变的量。变量有一个名字,称为有一个名字,称为变量名变量名,用标识符表示。,用标识符表示。变量的定义格式:变量的定义格式:如:如:intint a,b,ca,b,c; ; float float x,y,zx,

7、y,z; ; charchar chch; ; 变量的定义一般写在函数开头变量的定义一般写在函数开头, ,同时定义多个变量用逗同时定义多个变量用逗号隔开。号隔开。类型名类型名变量名,变量名,变量名,变量名,.,变量名,变量名; ;计算机基础 教学实验中心CompanyLogo3.5 整型数据整型数据3.5.1 整型常量整型常量三种表示形式:三种表示形式: 十进制整数:由数字十进制整数:由数字09和正负号表示。和正负号表示。如如123,-456,0 八进制整数:由数字八进制整数:由数字0开头开头,后跟数字后跟数字07表示。表示。如如0123,011 十六进制整数:由十六进制整数:由0 x或或0X

8、开头开头,后跟后跟09,af,AF表示。表示。如如0 x123,0Xff长整型常量长整型常量:789L、017L、0 x12aL(用用L大小写大小写引出引出)无符号常量无符号常量:12u,128uL(用用U大小写大小写引出)引出)计算机基础 教学实验中心CompanyLogo3.5 整型数据整型数据3.5.2 整型变量整型变量v 整型变量用于存放整型数据。根据数值的表示范围整型整型变量用于存放整型数据。根据数值的表示范围整型可以为整型(可以为整型(int)、短整型()、短整型(short)、长整型)、长整型(long)三种。)三种。v 这三种整型都默认为有符号型(这三种整型都默认为有符号型(s

9、igned),有符号型),有符号型即可以是正数、负数和即可以是正数、负数和0。也可以根据需要,将整型指。也可以根据需要,将整型指定为无符号型(定为无符号型(unsigned),此时整型变量只能存放),此时整型变量只能存放非负数。非负数。v 上面提到的上面提到的short、long、signed、unsigned都是都是一些类型修饰符,用于补充说明变量的特性一些类型修饰符,用于补充说明变量的特性计算机基础 教学实验中心CompanyLogo例例:整型数据的应用。整型数据的应用。#include #include void main()void main() intint a,b,ca,b,c;

10、; a=4; b=5; a=4; b=5; c=a c=a* *b;b; printf(“aprintf(“a* *b=%b=%dn”,cdn”,c);); 等价于:等价于:intint a a;intint b b;intint c c;CompanyLogo3.6 浮点型数据浮点型数据 3.6.1 浮点型常量浮点型常量两种表示形式:两种表示形式:v 十进制小数形式:十进制小数形式:必须带小数点必须带小数点如如0.123, .123, 123.0, 123. , 0.0v 指数形式:指数形式: e或或E之前必须有数字;指数必须为整数之前必须有数字;指数必须为整数如如12.3e3, 123E2

11、, 1.23e4 e-5 ,1.2E-3.5为错误的形式为错误的形式实型常量的类型细分:实型常量的类型细分:默认为默认为double型型,例如例如3.14就是就是double类型类型后面加后面加f或或F认为是认为是float型型,例如例如3.14f就是就是float类型类型计算机基础 教学实验中心CompanyLogo3.6 浮点型数据浮点型数据3.6.2 浮点型变量浮点型变量浮点型分为单精度型(浮点型分为单精度型(float)和双精度型)和双精度型(double)两种。)两种。v float型数据占用型数据占用4个字节(个字节(32bits)存储单元,提)存储单元,提供的有效数字是供的有效数

12、字是67位;位;v double型数据占用型数据占用8个字节(个字节(64bits)存储单元,)存储单元,提供的有效数字是提供的有效数字是1516位。位。 计算机基础 教学实验中心CompanyLogo例例:判断下列数值常量的正确与否。判断下列数值常量的正确与否。-100-100 018018e-2 e-2 -1e-1-1e-10 xfff0 xfff ox1ox11.1. 0 x00 x0-0 xe -0 xe -.99-.990a 0a 10e1.510e1.5正正 确确不正确不正确不正确不正确正正 确确正正 确确不正确不正确正正 确确正正 确确正正 确确正正 确确不正确不正确不正确不正确

13、CompanyLogo3.7 字符型数据字符型数据3.7.1 字符常量字符常量v 定义:定义:用用单引号单引号括起来的括起来的单个字符单个字符或或转义字符转义字符如如: a 、 ? 、A 、n 、”v 转义字符转义字符:反斜线反斜线后跟一个字符或一个代码值,用于表示特殊符号。后跟一个字符或一个代码值,用于表示特殊符号。如如12=n 12是是FF(换页)代码,不是(换页)代码,不是n的。的。字符常量在存储器中的值就是其字符常量在存储器中的值就是其ASCIIASCII码值码值计算机基础 教学实验中心CompanyLogo转义字符表转义字符表字符形式字符形式功能功能bb退格(Backspace)tt

14、横向跳格(一格或一个TAB位)vv竖向跳格nn换行rr回车不换行ff换页表示反斜杠 表示 (单引号) dddddd用三位八进制数表任意字符(ASCII值) xhhxhh用两位十六进制数表示任意字符(ASCII值)计算机基础 教学实验中心CompanyLogo例例:转义字符的应用。转义字符的应用。printf(“123456789012”);输出过程分解为:输出过程分解为:12345 1234678 1234678 901 2234678 901输出结果为:输出结果为:2234678 901#include#include mainmain()() printfprintf(101 x42 Cn

15、);(101 x42 Cn); printfprintf(I(I say:How are you?n); say:How are you?n); printfprintf(C Programn);(C Programn); printfprintf(Turbo(Turbo C); C); 运行结果:运行结果:( (屏幕显示屏幕显示) )A B CA B CI I say:say:”HowHow are you? are you?”C ProgramC ProgramTurbo Turbo C C#include#include mainmain()() printfprintf( (“YbYb

16、=n=n”);); 运行结果:运行结果:屏幕显示:屏幕显示:= =例例:转义字符的应用。转义字符的应用。CompanyLogo3.7 字符型数据字符型数据3.7.2 字符串常量字符串常量v 字符串常量字符串常量v 定义:定义:用用双引号双引号括起来的括起来的字符序列字符序列如如: “hello,world” 、 “A” 、 “”v 存储存储:每个字符串尾自动加个每个字符串尾自动加个0作为字符串结束标志作为字符串结束标志v 注意注意:字符常量字符常量和和字符串常量字符串常量是两个不同的概念是两个不同的概念charchar chch; ; chch= =“A A”;/;/错误错误charchar

17、chch; ;chch= =A A; ; h he e l ll lo o, ,w wo or rl ld d00A A0000计算机基础 教学实验中心CompanyLogo3.7 字符型数据字符型数据3.7.3 字符型变量字符型变量v 字符型变量在内存中占一个字节,由于存储的是字符字符型变量在内存中占一个字节,由于存储的是字符的二进制的二进制ASCII码,与整型数据存储方式类似,码,与整型数据存储方式类似,字字符型数据和整型数据符型数据和整型数据可以相互运算。可以相互运算。v 注意,字符串常量不允许赋值给字符型变量,注意,字符串常量不允许赋值给字符型变量,C语言语言也没有专门的字符串变量。要

18、在内存中存取字符串,也没有专门的字符串变量。要在内存中存取字符串,只能使用数组或指针。只能使用数组或指针。 计算机基础 教学实验中心CompanyLogo例例:#include #include voidvoid main( )main( ) char ch1,ch2; char ch1,ch2; ch1=A; ch1=A; ch2=ch1+32; ch2=ch1+32; printf(“%cn”,ch2); printf(“%cn”,ch2); 1 1、大小写字符的相互转换。、大小写字符的相互转换。#include #include voidvoid main( )main( ) char

19、c; char c; intint i; i; c=97; i=A; c=97; i=A; printf(“%cprintf(“%c % %dn”,c,cdn”,c,c);); printf(“%cprintf(“%c % %dn”,i,idn”,i,i);); 2 2、字符数据与整型数据通用。、字符数据与整型数据通用。CompanyLogo3.8 变量的初始化变量的初始化计算机基础 教学实验中心CompanyLogo3.9 运算符和表达式运算符和表达式3.9.1 算术表达式算术表达式1.算术运算符算术运算符 (1)+ 加法运算符,或表示正值,如加法运算符,或表示正值,如3+2,+1(2)-

20、减法运算符,或表示负值,如减法运算符,或表示负值,如3-2,-8(3)* 乘法运算符,如乘法运算符,如4*5(4)/ 除法运算符,如除法运算符,如5/3(5)%求余运算符,如求余运算符,如5%3C语言规定:语言规定:v 两个整数相除的结果整数,小数部分被舍去。两个整数相除的结果整数,小数部分被舍去。例如:例如:7/3的结果值是的结果值是2不是不是2.5, 而而7.0/3的结果是的结果是2.5。v %运算符只能用于整数相除求余,运算结果的符号与被除运算符只能用于整数相除求余,运算结果的符号与被除数相同。数相同。 计算机基础 教学实验中心 除除#include#include mainmain()

21、() floatfloat div; div; div=1/2; div=1/2; printfprintf( (“%fn%fn”,div,div);); 当除号两边都是整型量时,叫做当除号两边都是整型量时,叫做整除整除,运算结果只保,运算结果只保留整数部分。留整数部分。当除号任何一边有实型量时,运算结果是实数。当除号任何一边有实型量时,运算结果是实数。#include#include mainmain()() floatfloat div; div; div=1./2; div=1./2; printfprintf( (“%fn%fn”,div,div);); 运行结果:运行结果:0.000

22、0000.000000运行结果:运行结果:0.5000000.500000 余余#include#include mainmain()() printf printf(%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); printfprintf(%dn, -3%5);(%dn, -3%5); printfprintf(%dn, -5%3);(%dn, -5%3); 3= 0 3= 0*

23、*5 +35 +3 5= 1 5= 1* *3 +23 +2 3= 0 3= 0* *-5 +3-5 +3 5= -1 5= -1* *-3 +2-3 +2-3= 0-3= 0* *5 -35 -3-5= -1-5= -1* *3 -23 -2% % 要求两侧均为整型数据要求两侧均为整型数据 余余#include#include mainmain()() intint num; num; scanfscanf( (“%d%d”,&num);,&num); num=10 num=10* *(num%10)+(num/10);(num%10)+(num/10); printfpri

24、ntf( (“%d%d”,num);,num); #include #include mainmain()() intint num,i,j; num,i,j; scanfscanf( (“%d%d”,&num);,&num); i=num/10; i=num/10; j=num%10; j=num%10; num=10 num=10* *j+i;j+i; printfprintf( (“%d%d”,num);,num); 此程序把输入的两位此程序把输入的两位整数进行十位和个位整数进行十位和个位的互换。例如:输入的互换。例如:输入2525,输出,输出5252。CompanyLo

25、go3.9 运算符和表达式运算符和表达式2自增、自减运算符自增、自减运算符自增、自减运算符的作用是将自增、自减运算符的作用是将变量变量的值增加的值增加1或者减少或者减少1。 自增运算符:自增运算符: 自减运算符:自减运算符: 只能对变量使用只能对变量使用,不能用于常量和表达式不能用于常量和表达式 作前缀时是先运算、后引用作前缀时是先运算、后引用 作后缀时是先引用、后运算作后缀时是先引用、后运算i=j=3;i=j=3;x=i+;x=i+;y=+j;y=+j;i: 4i: 4j: 4j: 4x: 3x: 3y: 4y: 4建议:建议:+和和-语句如非特语句如非特殊需要,请单独一行使用殊需要,请单独

26、一行使用如如: x+; -k;: x+; -k; 计算机基础 教学实验中心例例1 1:若:若i=4i=4,则,则i+i+,+i+i的值分别为多少?的值分别为多少?对单独的变量进行自加运算,前置和后置没有区别 i+和+i的值都为5例例2 2:执行下列程序段以后,:执行下列程序段以后,i i、j j的值?的值? i=4i=4; j=i+j=i+;+后置,先取i的值4赋值给j,然后i再自加1。i的值为5,j的值为4例例3 3:执行下列程序段以后,:执行下列程序段以后,i i、j j的值?的值? i=4;i=4; j=+i; j=+i;+前置,先对i进行自加运算,再取出i的值对j进行赋值。i的值为5,

27、j的值为5 例例4 4:执行下列程序段以后,:执行下列程序段以后,i i、k k的值?的值? i=3;i=3; k=(+ k=(+i)+(+i)+(+ii)+(+i)+(+i); ); 运算运算结合顺序注意结合顺序注意(+i):i+1=3+1=4;(+i):i+1=4+1=5;(+i):i+1=5+1=6;因此其结果不应该为: k=(+i)+(+i)+(+i)=4+5+6=15;而是: k=i+i+i=6+6+6=18思考:若a=5,b=(+a)+(a+);则b的值? 例例 :CompanyLogo例例:阅读下面的程序,写出运行结果:阅读下面的程序,写出运行结果:#include #inclu

28、de voidvoid main()main() intint i=2,j,k; i=2,j,k;j=(j=(i+)+(i+)+(ii+)+(i+)+(i+);+);k=(-k=(-i)+(-i)+(-ii)+(-i)+(-i););printf(printf(“%d%d %d %d %d%d n n”,i,j,k,i,j,k);); 结果为:结果为:2 6 62 6 6CompanyLogo例例:算术表达式举例(算术表达式举例(设所有变量均为实型设所有变量均为实型):1/(a+b)1/(a+b)(exp(x)-exp(-x)/2(exp(x)-exp(-x)/2 log loglog(b)/

29、log(alog(b)/log(a) ) a ax+bx+c(x+dx+bx+c(x+d)a a* *( (x+bx+b* *( (x+cx+c* *( (x+dx+d)(-(-b+sqrt(bb+sqrt(b* *b-4b-4* *a a* *c)/(2c)/(2* *a)a) r r3 34 4* *3.141593.14159* *pow(r,3)/3pow(r,3)/3 (r (r1 1+r+r2 2)(r)(r1 1- r- r2 2) ) (r1+r2)(r1+r2)* *(r1-r2)(r1-r2)ba12eexxbaaacbb24234CompanyLogo3.9 运算符和表达

30、式运算符和表达式3.9.2 赋值表达式赋值表达式v 简单赋值运算符简单赋值运算符 符号:符号:= 格式:格式:变量标识符变量标识符=表达式表达式 功能:将功能:将一个数据(常量或表达式)一个数据(常量或表达式)赋给赋给一个一个变量变量v 复合赋值运算符复合赋值运算符 种类:种类:+=、-= 、*= 、/= 、%= 含义:含义:exp1 op = exp2 exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3计算机基础 教学实验中心v结合方向:自右向左结合方向:自右向左v赋值语句左侧必须是变量,不能是常量或表达式赋值语句左侧必须是变量,不能是常

31、量或表达式v赋值的转换规则赋值的转换规则: :使赋值号右边表达式值自动转换使赋值号右边表达式值自动转换成其左边变量的类型成其左边变量的类型a=3; a=3; b=4;b=4;a=b;a=b;3=x-23=x-2* *y;y;a+ba+b=3;=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=5a=b=c=5 a=(b=5) a=(b=5) a=5+(

32、c=6) a=5+(c=6) a=(b=4)+(c=6) a=(b=4)+(c=6)/表达式值为表达式值为5 5,a,b,ca,b,c值为值为5 5/ b=5;a=5/ b=5;a=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-=aa+=a-=a* *a a例例: : intint a=2; a=2; a%=4-1; a%=4-1; a+=a a+=a* *=a-=a=a-=a* *=3;=3; /a=-264 /a=-264 等价于等价于a=a=a+(aa

33、+(a=a-(a=a-(a* *a)a)/a=0 /a=0 等价于等价于a=a=a+(aa+(a=a=a* *(a=a-(a=a(a=a-(a=a* *3)3)CompanyLogo3.9 运算符和表达式运算符和表达式3.9.3 逗号运算符和表达式逗号运算符和表达式 用逗号将多个表达式连接起来,又称为用逗号将多个表达式连接起来,又称为“顺序求值顺序求值运算符运算符”。整个表达式的值是最后那个逗号之后表。整个表达式的值是最后那个逗号之后表达式的值达式的值请求下列表达式的值:请求下列表达式的值:3+43+4,6 6a=(a=3,6a=(a=3,6* *3)3)a=a=3,6a=a=3,6* *3

34、3a=3,a+=2,a+3a=3,a+=2,a+3a=3a=3* *5,a5,a* *4 4(a=3(a=3* *5,a5,a* *4),a+54),a+56 6a=18 a=18 1818a=3 18a=3 18a=5 8a=5 8a=15 60a=15 60a=15 20a=15 20计算机基础 教学实验中心CompanyLogo3.10 数据类型转换数据类型转换3.10.1 隐式转换隐式转换整型、实型和字符型数据之间可以混合运算。例如:整型、实型和字符型数据之间可以混合运算。例如: 10 + a + 1.5 - 8765.1234 * b 不同数据类型之间运算会进行自动类型转换,规则如下

35、:不同数据类型之间运算会进行自动类型转换,规则如下:intint char,shortchar,shortunsignedunsigned long long double float double float低低高高必定的转换必定的转换运算对象类型不运算对象类型不同时转换的方向同时转换的方向计算机基础 教学实验中心char char chch; ;intint i; i;float f;float f;double d;double d;chch / i + f / i + f * * d - ( f + i ) d - ( f + i )doubledoubleintintdoubledoubledoubledouble doubledoubleintintdoubledoubledoubledoubledoubledouble 10 + 10 + a a + 1.5 - 8765.1234 + 1.5 - 8765.1234 * *

温馨提示

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

评论

0/150

提交评论