《数据类型和运算符.ppt》由会员分享,可在线阅读,更多相关《数据类型和运算符.ppt(34页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第三章第三章 数据类型、运算符与数据类型、运算符与表达式表达式3.1 C 的数据类型C C语言的数据结构是以语言的数据结构是以数据类型数据类型形式出现的形式出现的.C C的数据类型如下:的数据类型如下:数据类型数据类型整型整型字符型字符型实型实型(俘点型):单精度型、双精度型俘点型):单精度型、双精度型枚举类型枚举类型构造类型构造类型 数组类型数组类型结构体类型结构体类型共用体类型共用体类型指针类型指针类型空类型空类型基本类型基本类型语言中的数据有常量和变量之分,它们分别属于以上这些类型。语言中的数据有常量和变量之分,它们分别属于以上这些类型。程序举例求圆的周长和面积求圆的周长和面积main(
2、)float s,area,r;r=4.2;s=2*3.14*r;area=3.14*r*r;printf(s=%f,area=%f,s,area);X+2=3变量常量程序中哪些是常量、变量3.2.1 常量1.常量:在程序运行过程中其值不能被改变的量。常量:在程序运行过程中其值不能被改变的量。如:如:15 ,-3为整型常量为整型常量 5.4,1.23 为实型常量为实型常量 a,b 为字符型常量为字符型常量 ac2.符号常量:用一个标示符代表一个常量。符号常量:用一个标示符代表一个常量。符号常量一般用大写字母表示。符号常量一般用大写字母表示。如:如:define PI 3.1415926 (#d
3、efine是宏定义命令)是宏定义命令)常量一般用于初始化变量;常量不占用存储空间。常量一般用于初始化变量;常量不占用存储空间。3.2.2 变量 变量:其变量:其值可以改变值可以改变的量的量,变量的定义一般是放在函数变量的定义一般是放在函数的开始部分声明。变量占用内存空间。的开始部分声明。变量占用内存空间。例如:例如:int a=5;每个变量都有名字,变量名习惯用每个变量都有名字,变量名习惯用小写字母小写字母表示,一表示,一个变量在内存中占据一定的存储单元,变量名实际是个变量在内存中占据一定的存储单元,变量名实际是一个一个符号地址符号地址。通过通过变量名变量名找到相应的内存地址,从其找到相应的内
4、存地址,从其存储单元存储单元中读中读取数据。取数据。5a变量名变量名变量值变量值存储单元存储单元3.2.2 变量标识符标识符:用来标识变量名、符号常量名、函数名、数组:用来标识变量名、符号常量名、函数名、数组名、名、类型名的有效字符序列称为标识符。类型名的有效字符序列称为标识符。(不包括文件名不包括文件名)标识符的命名规则标识符的命名规则:字母、数字、下划线构成,第一个字符是字母或下划线;区分大小写;sun、Sun、SUN是三个不同的变量。长度(最好不超过长度(最好不超过8个字符)个字符)见名知义见名知义 2ab,d%t,S-rrff注:注:变量名一般用小写字母表示变量名一般用小写字母表示。变
5、量必须变量必须“先定义,后使用先定义,后使用”,一般在函数的开始部一般在函数的开始部分进行定义。每个变量有一个名字并指定为确定的类型,分进行定义。每个变量有一个名字并指定为确定的类型,通过变量名区分不同的变量。通过变量名区分不同的变量。3.3 整型数据整型数据整型常量整型常量 整型常量有如下三种形式:整型常量有如下三种形式:十进制整数十进制整数 如:如:124,-98 八进制整数八进制整数 要求以要求以0开头,如:开头,如:0123 十六进制整数十六进制整数 要求以要求以0 x开头,如开头,如:0 x12 计算机直接处理的是计算机直接处理的是二进制数二进制数3.3 整型数据整型数据整型变量整型
6、变量整型变量:有如下四种类型:整型变量:有如下四种类型:1.基本型基本型:用用 int 表示,占表示,占2字节。字节。2.短整型短整型:用用 short int 或或short 表示,占表示,占2字节。字节。3.长整型长整型:用用 long int 或或long 表示,占表示,占4字节。字节。以上三种类型的变量,最高位为符号位,以上三种类型的变量,最高位为符号位,用用1表示负数,用表示负数,用0表示正数。表示正数。4.无符号型无符号型,不能存放负数,不能存放负数,分别表示为分别表示为 unsigned int,unsigned short,unsigned long 关于各种类型在内存中所占的
7、位数以及数的关于各种类型在内存中所占的位数以及数的范围见范围见p43-表表3-1必须记住必须记住实型常量1.十进制形式十进制形式:由数字和小数点组成。:由数字和小数点组成。如:如:0.0,123.0,0.12,12.34 。2.指数形式指数形式:如:如:123e2和和123E2都表示都表示 1231010。注意:注意:e或或E 的前面要有的前面要有数字数字、后面必须是、后面必须是整数整数。规范化指数形式规范化指数形式:字母:字母E前数的小数点左边应有前数的小数点左边应有(只能有)一位非零数字。如(只能有)一位非零数字。如1.23E43.4.1 实型数据实型数据-实型常量实型常量e3 1.2e3
8、.5 3.4实型数据实型数据3.4.2 实型数据实型数据-实型变量实型变量 实型数据在内存中按照指数形式存储实型数据在内存中按照指数形式存储实型变量分类1.单精度型单精度型:用:用float 表示,在内存中占表示,在内存中占4个字节有效数字个字节有效数字67。2.双精度型双精度型:用:用double 表示表示,在内存中占在内存中占8个字节有效数字个字节有效数字1516。3.长双精度型长双精度型:用:用long double 表示表示,在内存中占在内存中占16个字节个字节。float a;/*float只能接收只能接收7位有效数字,位有效数字,a=123456.789;因此最后两位小数不起作用因
9、此最后两位小数不起作用*/实型常量的类型实型常量作为实型常量作为双精度double来处理,若在数的后面加字母来处理,若在数的后面加字母f或或F如如(1.65f),则按则按单精度float处理。处理。程序举例main()int n;float p,sum;n=20;p=25.5;sum=n*p;printf(“sum=%f”,sum);注意:何时用实型 何时用整型小明给同学买书小明给同学买书3.5 字符型数据3.5.1 字符常量3.5.2 字符变量3.5.2 字符串常量字符常量C字符常量是用单引号 括起来的一个字符.如a、A、?转义字符:一个以 开头的字符序列.见教材P48表3-3见表3-3字符
10、字符功功 能能nn换行换行t横向跳格(即跳到下一个输出区)v竖向跳格b退格rr回车回车f走纸换页反斜杠字符“”单引号字符ddd1到3位8进制数所代表的字符,xhh 1到2位16 进制数所代表的字符3.5.2 字符变量字符变量 字符型变量字符型变量:只能存放一个字符只能存放一个字符,其定义形式其定义形式:char char c1,c2;c1,c2;c1=a;c2=b;c1=a;c2=b;字符数据在内存中的存储形式字符数据在内存中的存储形式:将一个字符常量存放到字符变量中将一个字符常量存放到字符变量中,是将该字符是将该字符的的ASCIIASCII码存放到存储单元码存放到存储单元,占用占用一个一个字
11、节字节,其存其存储形式与整型数据的存储形式类似储形式与整型数据的存储形式类似.0 1 1 0 0 0 0 1 0 1 1 0 0 0 1 09798c1=ac2=b标标准准ASCII表表1.字符型数据与整型数据通用字符型数据与整型数据通用,即可以字符形式即可以字符形式(%c)输出输出,也可以整数形式也可以整数形式(%d)输出输出.printf(%c,%d,c1,c1);2.字符型数据和整型数据可以相互赋值字符型数据和整型数据可以相互赋值.int i;char c;i=a;c=97;printf(%c,%c,i,c);Printf(“n%d,%d”,i,c);0 1 1 0 0 0 0 1%c%
12、da97说明:说明:3_23.6变量赋初值赋值语句Int a,b,c;a=b=c=5;对C C语言允许在定义变量的同时使变量语言允许在定义变量的同时使变量初始化初始化。如如:int a=3;float f=3.56;char c=a;int a=3;float f=3.56;char c=a;int a,b,c=5;int a,b,c=5;对一部分变量赋初值对一部分变量赋初值不可以:不可以:int a=b=c=5;int a=b=c=5;应该应该 int a=5,b=5,c=5;int a=5,b=5,c=5;初始化不是在编译阶段进行的初始化不是在编译阶段进行的,是程序运行时赋初值是程序运行时
13、赋初值.int a=5;int a=5;相当于相当于int a;int a;a=5;a=5;int a,b,c=5;int a,b,c=5;相当于相当于int a,b,c;int a,b,c;c=5c=5;3_63_63.7各类数值型数据间的混合运算整型、实型、字符型数据间可以混合运算整型、实型、字符型数据间可以混合运算,如如:10+a+1.5-8765.1234*b10+a+1.5-8765.1234*b混合运算时混合运算时,数据要先转换成同一类型数据要先转换成同一类型,类型转换是类型转换是由系统自动进行的由系统自动进行的。转换规则如图。转换规则如图:设设i i为为intint型型,f,f为
14、为floatfloat型型,d,d为为doubledouble型型,e,e为为longlong型型 10+a10+a+i*fi*f-d/ed/edoublelongunsignedintchar,shortfloat高高低低int +doubledouble+doubledouble强制类型转换运算符作用作用:将一个表达式的值转换为所需类型将一个表达式的值转换为所需类型.一般形式一般形式:(类型名类型名)()(表达式表达式)如如:(double)(x+y)将将x+y的值转换成双精度型。的值转换成双精度型。(double)x+y 只将只将x的值转换成双精度型的值转换成双精度型,而原而原来变量的类
15、型不变。来变量的类型不变。对于求模运算符,如果两侧的运算对象类型对于求模运算符,如果两侧的运算对象类型不同,则只能用强制类型转换的形式不同,则只能用强制类型转换的形式 float x (int)x%3 float x (int)x%33_3运算符a+b*2!c%n红色为运算符C语言的运算是如何完成?1.优先级2.结合性C运算符1.1.算术运算符算术运算符(+-*/%+-*/%)2.2.关系运算符关系运算符(=!=)3.3.逻辑运算符逻辑运算符(!&|!&|)4.4.位运算符位运算符(|&|&)5.5.赋值运算符赋值运算符(=及其扩展赋值运算符及其扩展赋值运算符)6.6.条件运算符条件运算符(?
16、:?:)7.7.逗号运算符逗号运算符(,)8.8.指针运算符指针运算符(*和和&)9.9.求字节数运算符求字节数运算符(sizeof sizeof)10.10.强制类型转换运算符强制类型转换运算符(类型类型)11.11.分量运算符分量运算符(.)12.12.下标运算符下标运算符()13.13.其它其它编辑数据3.8 算术运算符和算术表达式 基本的算术运算符基本算术运算符有:加+减-乘*除/求余%注意注意:1.:1.两个整数相除的结果为整数两个整数相除的结果为整数,如如5/35/3结果为结果为1.1.2.%2.%两侧的数据均为两侧的数据均为整型数据整型数据.3.3.若参加若参加+-*/+-*/运
17、算的两个数中有一个为实数运算的两个数中有一个为实数,运算结果为运算结果为doubledouble型型.算术表达式用用算术运算符算术运算符和和括号括号将运算对象将运算对象(操作数操作数)连接起连接起来的、符合来的、符合C C语法规则的式子称为语法规则的式子称为C C算术表达式算术表达式.如如a*b/c-1.5+aa*b/c-1.5+a运算符的优先级和结合性运算符的优先级和结合性表达式求值时表达式求值时,先按运算符的先按运算符的优先级别优先级别高低次序执高低次序执行行.若在一个操作数两侧的运算符优先级相同若在一个操作数两侧的运算符优先级相同,则则按规定的按规定的结合方向结合方向处理处理.1.1.先
18、乘除余后加减先乘除余后加减2.2.算术运算符为左结合性算术运算符为左结合性a-b*c+d%e1234自增、自减运算符自增运算符(自增运算符(+)和自减运算符()和自减运算符(-)的功能是使变)的功能是使变量的值增量的值增1或减或减1。运算符的优先级。运算符的优先级高于高于算术运算符,算术运算符,是是右结合右结合性。性。形形 式式:1.+i,-i(1.+i,-i(先加先加(减减)1,)1,后使用后使用i)i=i+1,i=i-1i)i=i+1,i=i-12.i+,i-(2.i+,i-(先使用先使用i,i,后加后加(减减)1,)1,)如如:i=3;:i=3;1.j=+i;(i=4,ij,j=4)1.
19、j=+i;(i=4,ij,j=4)2.j=i+;(ij,j=3,i=4)2.j=i+;(ij,j=3,i=4)例如:例如:main()int i=3,j,k;j=i+;k=-i;printf(%d,%d,%d,i,j,k);注注 意意:1.+1.+、-运算符只能用于变量运算符只能用于变量,不能用于不能用于常量常量或或表达式表达式.5+,(a+b)+5+,(a+b)+是是不不合法的合法的.2.+2.+、-结合方向是自右向左结合方向是自右向左3_43.9 赋值运算符和赋值表达式(p59)赋值运算符赋值运算符等号等号(=),是将,是将一个数据赋给一个变一个数据赋给一个变量。量。如:如:a=3+4;a
20、=3+4;就是将就是将3+43+4的值的值7 7赋给变量赋给变量a a。如果赋值运算符两侧的类型不一致,要进行类型如果赋值运算符两侧的类型不一致,要进行类型转换。转换。1.1.实型实型整型时整型时,舍弃小数舍弃小数.intint i;i=3.56;i;i=3.56;i i的值为的值为3.3.2.2.整型整型实型时实型时,补足有效位数补足有效位数.float f;double d;f=23;d=23;float f;double d;f=23;d=23;则则f f为为23.00000,d23.00000,d为为23.00000000000000.23.00000000000000.3.3.整型整
21、型字符型时字符型时,将低八位送到字符型变量将低八位送到字符型变量赋值表达式v定定 义义:用赋值运算符将一个变量和一个表达用赋值运算符将一个变量和一个表达式连接起来的式子式连接起来的式子.v一般形式一般形式:变量变量 赋值运算符赋值运算符 表达式表达式1.1.赋值表达式的值就是被赋值的变量的值。赋值表达式的值就是被赋值的变量的值。a=5;a=5;表达式的值为表达式的值为5.5.2.2.赋值运算符的结合性赋值运算符的结合性:自右向左自右向左 a=a=b=5b=5例例2:a+=a-=a*a 设设a的值为的值为12,则按下面的顺序求解。,则按下面的顺序求解。a-=a*a 得到得到 a=-132 a+=
22、-132 得到得到 a=-264复合的赋值运算符复合的赋值运算符在赋值符在赋值符“=”之前加上之前加上算术运算符算术运算符或或位运算符位运算符就可以构成复合的赋值运算符。就可以构成复合的赋值运算符。C语言规定可以使用10种复合赋值运算符,这里先介绍5种。+=,-=,*=,/=,%=如:a+=b+4 相当于 a=a+(b+4)x%=y+3 x=x%(y+3)自学自学:3.10逗号运算符逗号运算符和逗号表达式和逗号表达式教材作业:教材作业:p66 3.6 3.8 3.10 3.12 1.设有设有 int x=11;则表达式则表达式(x+*1/3)的值是的值是_。A)3 B)4 C)11 D)12
23、2.若若已已定定义义x和和y为为double类类型型,则则表表达达式式x=1,y=x+3/2 的值是的值是_。A)1 B)2 C)2.0 D)2.5 3.若若a是是int型型变变量量,则则表表达达式式(a=4*5,a*2),a+6的的值值为为_。4.main()int i=3,j,k;i+;+i;j=i+;k=-i;printf(%d,%d,%d,i,j,k);5,5,5练习题练习题n=n%a n=2a=a+2 a=5a=a-5 a=05.表表达达式式18/4*sqrt(4.0)/8值值的的数数据据类类型型为为_。(。(sqrt的功能是求平方根)的功能是求平方根)A)int B)float C
24、)double D)不确定不确定B)6.设设i=3,j=4,程程序序段段中中执执行行i+;+j后后,printf(%d,i+j);的输出结果为的输出结果为_。C)9 B)7 C)8 D)6 D)7.以下程序的输出结果是以下程序的输出结果是_。E)#include F)main()G)int a=3,n=5;H)printf(%dn,(a-=a+=n%=a);I)8.以下程序运行后的输出结果是 。main()char m;m=B+32;printf(%cn,m);9.以下程序运行后的输出结果是 。main()int p=30;printf(%dn,(p/30?p/10:p%3);10.已知i、j、k为int型变量,若从键盘输入:1,2,3,使i的值为1、j的值为2、k的值为3,以下选项中正确的输入语句是A)scanf(“%2d%2d%2d”,&i,&j,&k);B)scanf(“%d%d%d”,&i,&j,&k);C)scanf(“%d,%d,%d”,&i,&j,&k);D)scanf(“i=%d,j=%d,k=%d”,&i,&j,&k);11.以下选项中,非法的字符常量是A)t B)17 C)“n”D)xaa12.以下非法的赋值语句是 A)n=(i=2,+i);B)j+;C)+(i+1);D)x=j0;