第2章数据类型、运算符和表达式.ppt

上传人:sccc 文档编号:4953490 上传时间:2023-05-25 格式:PPT 页数:60 大小:2.39MB
返回 下载 相关 举报
第2章数据类型、运算符和表达式.ppt_第1页
第1页 / 共60页
第2章数据类型、运算符和表达式.ppt_第2页
第2页 / 共60页
第2章数据类型、运算符和表达式.ppt_第3页
第3页 / 共60页
第2章数据类型、运算符和表达式.ppt_第4页
第4页 / 共60页
第2章数据类型、运算符和表达式.ppt_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《第2章数据类型、运算符和表达式.ppt》由会员分享,可在线阅读,更多相关《第2章数据类型、运算符和表达式.ppt(60页珍藏版)》请在三一办公上搜索。

1、,第2章 数据类型、运算符、表达式,C程序设计,2.1 C语言的数据类型2.2 标识符2.3 常量2.4 变量2.5 变量赋初值2.6 各种数值型数据间的混合运算2.7 几种基本运算符及其表达式,2,2.1 语言的数据类型,数据类型是指数据的内在表现形式(代码、存储、运算)的数据类型如下:,指针类型,2023/5/25,3,1、基本类型 基本类型最主要的特点是,其值不可以再分解为其他类型。也就是说,基本类型是自我说明的。在C语言中,构造类型有以下几种:(1)整型;(2)字符型;(3)实型;(4)枚举类型。,2.1 语言的数据类型,2023/5/25,4,2、构造类型 构造类型是根据已定义的一个

2、或多个数据类型,用构造的方法来定义的。在C语言中,构造类型有以下几种(1)数组类型;(2)结构体类型;(3)共用体(联合)类型。,2.1 语言的数据类型,2023/5/25,5,3、指针类型 指针是一种特殊的,同时又具有重要作用的数据类型,其值用来表示某个变量在内存储器中的地址。,2.1 语言的数据类型,2023/5/25,6,4、空类型 C程序是由函数构成的。在调用函数值时,通常应向调用者返回一个函数值。有一类函数,调用后并不需要向调用者返回函数值,这种函数的返回值数据类型可以被定义为“空类型”。其类型说明符为void。,2.1 语言的数据类型,2023/5/25,7,2.2 标识符,1、标

3、识符的定义 用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列称为标识符。简单地说,标识符就是一个名字。C语言规定标识符只能由字母、数字和下画线三种字符组成,且第一个字符必须为字母或下画线。,2023/5/25,8,下面列出的是合法的标识符,也是合法的变量Sum,average,_total,Class,day,monthStudent_name,tan,lotus_1_2_3,BASICli_ling下面是不合法的标识符和变量名:LBJames,¥8236,#56,9D37,xy注意:大写字母和小写字母被认为是两个不同的字符。因此sum和SUM,Class和class是

4、两个不同的变量名。通常,变量名用小写字母表示,与人们日常习惯一致,以增加可读性。,2.2 标识符,2023/5/25,9,2.3 常量一、整型常量1、十进制整数 没有前缀,其数码为09。如:532、-156、65535、13672、八进制整数 由07数字组成;最高位必须用0作引导符 如:015(十进制为13)、0101(十进制为65)、0177777(十进制为65535)3、十六进制整数前缀为0X或0 x,其数码取值为09,AF或af。如:0X2A(十进制为42)、0XA0(十进制为160)、0XFFFF(十进制为65535)。,2023/5/25,10,2.3 常量二、实型常量实型也称为浮点

5、型。实型常量也称为实数或者浮点数。在语言中,实数只采用十进制。它有两种形式:十进制小数形式和指数形式。1、十进制小数形式由数码0 9和小数点组成。如:0.01,25.03,35.536,1.24,6.35,278.,-435.450小数点不能省略,也不能只有一个小数点2、指数形式:由十进制数,加上阶码标志“e”或“E”及阶码(只能为整数,可以带符号)组成:a E n(a为十进制数,n为十进制整数)如:3.2E5等于3.2105 4.7E-2等于4.710-2,2023/5/25,11,2.3 常量三、字符常量1、字符常量是用单引号括起来的一个字符。例如:A、B、=、+、?2、转义字符 特殊形式

6、的字符常量,以反斜线“”开头,后跟一个或几个字符的字符序列。字符常量有以下特点:(1)字符常量只能用单引号括起来,不能用双引号或括号。(2)字符常量只能是单个字符,不能是字符串。(3)字符可以是字符集中任意字符,但数字被定义为字符型之后就不能参与数值运算。,2023/5/25,12,2.3 常量例:转义字符的使用main()printf(mn ct*#rftgn);printf(wtibbj k);结果:f g*#w j k,2023/5/25,13,2.3 常量四、字符串常量字符串常量是由一对双引号括起的字符序列。例如,Beijing2008,China fighting注意:c 与 c 比

7、较 c 在内存中占一个字节,表示为:c 在内存中占两个字节,表示为:,2023/5/25,14,2.3 常量五、符号常量 1、符号常量的定义用一个标识符来表示一个常量,称为符号常量。符号常量在使用之前必须先定义,其一般形式为:#define 标识符 常量,2023/5/25,15,例:求任意圆的周长和面积main()float r,c,s;scanf(“%f”,#define PI 3.14main()float r,c,s;c=2*PI*r;scanf(“%f”,2.3 常量,2023/5/25,16,注意:1、使用之前必须先定义;2、符号常量名用大写,变量用小写;3、符号常量的值在其作用域

8、内不能改变;4、凡是以“#”开头的都为预处理命令,不是语句,故后面无符号。,2.3 常量,2023/5/25,17,2.4 变量变量的定义 在程序执行过程中可以改变和赋值的量。一个变量应该有一个名字,在内存中占据一定的存储单元。变量的存储形式:,2023/5/25,18,2.4 变量一、整型变量1、整型数据在内存中的存放形式数据在内存中以二进制形式存放的如:int i;i=10;,10,i,数据存放示意图,数据在内存中实际存放示意图,2023/5/25,19,2.4 变量2、整型变量的分类短整型:以short int 或short说明,2字节。如:short s,sum基本型(整型):以 in

9、t 说明 2字节。如:int i,sum长整型:以 long int或long说明 4字节。如:long l,sum无符号整型:用 unsigned int 或 unsigned 说明无符号短整型:用 unsigned short 说明无符号长整型:用 unsigned long 说明 如:unsigned int c,d;,2023/5/25,20,2.4 变量3、整型变量的定义格式 类型说明符 变量名标识符,变量名标识符;例如:int x,z,y;/*x,z,y为整型变量*/long n,m;/*n,m为长整型变量*/unsigned a,b;/*a,b为无符号整型变量*/,2023/5/

10、25,21,2.4 变量二、实型变量1、实型数据在内存中的存放形式实型数据一般占4个字节(32位)的内存空间,按指数形式存储。2、实型变量的分类实型变量分为单精度(float型)、双精度(double型)和长双精度(long double型)三类。注意:float型的有效位数为67位,double型的有效位数为1516位,所以要避免一个很大的float型数与一个很小的数相加或相减,否则会丢数。,2023/5/25,22,2.4 变量例:实型数据的舍入误差main()float a,b;a=123456.789e5;b=a+20;printf(%f,b);程序运行结果如下:12345678848

11、.000000,2023/5/25,23,2.4 变量一、字符变量字符变量:用来存储字符常量,即用来存储单个字符。格式:char 变量名表列 如:char x,y;,2023/5/25,24,2.4 变量例:向字符变量赋以整数。main()char m,n;m=120;n=121;printf(%c,%cn,m,n);printf(%d,%dn,m,n);程序运行结果如下:x,y120,121说明:字符型数据和整型数据是通用的,2023/5/25,25,2.5 变量赋初值变量初始化的方法:1、先定义变量,后赋值 int a,b;a=123;b=456;2、定义变量,部分赋值 float a,b

12、=0.5,c;3、定义变量赋初值同步 float a=0.1,b=0.5,c=4.3;注意:变量赋初值时不允许连等 int a=b=c=4;,int a,b,c;a=b=c=1;,2023/5/25,26,2.6 混合运算 整型、实型(单、双精度)、字符型数据间可以混合运算。如:a+2*3.5+6.7*2 规则:不同类型先转换成同一类型,再进行计算,2023/5/25,27,2.7运算符和表达式,一、C运算符简介1、算术运算符:用于各类数值运算。包括加(+)、减(-)、乘(*)、除(/)、求余(或称模运算,%)、自增(+)、自减(-)共七种。2、关系运算符:用于比较运算。包括大于()、小于(=

13、)、小于等于()六种。,2023/5/25,28,5、赋值运算符:用于赋值运算,分为简单赋值(=)、复合算 术赋值(+=,-=,*=,/=,%=)和复合位运算赋值(&=,|=,=,=,=)三类共十一种。6、条件运算符:这是一个三目运算符,用于条件求值(?:)。7、逗号运算符:用于把若干表达式组合成一个表达式(,)。8、指针运算符:用于取内容(*)和取地址(&)二种运算。9、求字节数运算符:用于计算数据类型所占的字节数(sizeof)。10、特殊运算符:有括号(),下标,成员(,.)等几种。,2.7运算符和表达式,2023/5/25,29,2.7 运算符和表达式二、算术运算符和算术表达式1、基本

14、算术运算符和算术表达式+/%运算对象:常量、变量、函数等运算级别:低/%高整/整整整/实实实/整实%两边为整数不能为实数。结果的符号与被除数的符号相同 15%43 15%43-15%4=-3-15%-4=-3,2023/5/25,30,2.7 运算符和表达式2、运算符的优先级和结合性算数运算符的优先级:先*、/、%后+、-算术运算符的结合性:左结合型。即表达式从左向右进行计算说明:当一个运算量两侧的运算符优先级相同时,则按运算符的结合性所规定的结合方向处理。,2023/5/25,31,2.7 运算符和表达式3、强制类型转换运算符强制类型转换是通过类型转换运算来实现的。其一般形式为:(类型说明符

15、)(表达式)例如:(float)z/*把z转换为实型*/(int)(a+b)/*把a+b的结果转换为整型*/,2023/5/25,32,2.7 运算符和表达式、自增、自减运算符自增1运算符记为“+”,其功能是使变量的值自增1;自减1运算符记为“-”,其功能是使变量的值自减1可有以下几种形式:(1)+i:i自增1后再参与其他运算。(2)-i:i自减1后再参与其他运算。(3)i+:i参与运算后,i的值再自增1。(4)i-:i参与运算后,i的值再自减1。,2023/5/25,33,说明:1、自增、自减运算符为单目运算符 2、只能用于变量,不能用于常量 x 5+a-3、优先级别高于算术运算符,结合方向

16、“自右向左”-i+-(i+),2.7 运算符和表达式,2023/5/25,34,例:自增、自减运算。main()int i;i=6;printf(%dn,+i);printf(%dn,-i);printf(%dn,i+);printf(%dn,i-);printf(%dn,-i+);printf(%dn,-i-);printf(%dn,i);,程序运行结果:7667-6-76,2.7 运算符和表达式,2023/5/25,35,2.7 运算符和表达式三、赋值运算符和赋值表达式1、赋值运算符简单赋值运算符记为“=”,由“=”连接的式子称为赋值表达式,其一般形式为:变量=表达式例如:x=m+nw=s

17、in(m)+sin(n)y=i+-j,注意:与数学中的等式不同,2023/5/25,36,2、赋值结果类型转换如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。具体规定如下:(1)实型数据赋予整型变量,舍去小数部分,前面的例子已经说明了这种情况。(2)整型数据赋予实型变量,数值不变,但以浮点形式存放,即增加小数部分(补0)。(3)字符型数据赋予整型变量,由于字符型为1个字节,而整型为2个字节,故将字符的ASCII码值存放到整型量的低八位中,高八位为0。当整型数据赋予字符型变量时,只把低八位赋予字符量。,2.7 运算符和表达式,2023/5/25,3

18、7,例:数据类型转换。main()int a,b,c=322;float x,y=8.88;char c1=k,c2;a=y;x=c;b=c1;c2=c;printf(%d,%f,%d,%c,a,x,b,c2);程序运行结果:8,322.000000,107,B,2.7 运算符和表达式,2023/5/25,38,3、复合的赋值运算符在赋值符“=”之前加上其它运算符,构成 复合运算符+=,-=,*=,/=,%=,=,&=,=,|=如:x+=5/*等价于x=x+5*/a*=b+7/*等价于a=a*(b+7)*/m%=n/*等价于m=m%n*/,2.7 运算符和表达式,2023/5/25,39,2.

19、7 运算符和表达式四、关系运算运算符和表达式1、关系运算符及其优先次序在C语言中有以下几种关系运算符:(1)大于(4)=大于等于(5)=等于(6)!=不等于关系运算符均为左结合,优先级低于算术运算符,高于赋值运算符。在6个关系运算符中,、=的优先级相同,高于=和!=。=和!=的优先级相同。,2023/5/25,40,2、关系表达式关系表达式的一般形式为:表达式 关系运算符 表达式例如:a+bc-dx3/2a+1c-i-5*j=k+1,2.7 运算符和表达式,2023/5/25,41,2.7 运算符和表达式五、逻辑运算符和表达式 1、逻辑运算符C语言中提供了3种逻辑运算符:(1)&与运算(2)|

20、或运算(3)!非运算,2023/5/25,42,优先级:结合性:与运算符“&”和或运算符“|”均为双目运算符,具有左结合性。非运算符“!”为单目运算符,具有右结合性。,2.7 运算符和表达式,2023/5/25,43,2、逻辑运算的值逻辑运算的值也为“真”和“假”两种,用“1”和“0”表示。其求值规则如下:(1)与运算&:参与运算的两个量都为真时,结果才为真,否则为假。(2)或运算|:参与运算的两个量只要有一个为真,结果就为真。两个量都为假时,结果为假。(3)非运算!:参与运算量为真时,结果为假;参与运算量为假时,结果为真。,2.7 运算符和表达式,2023/5/25,44,3、逻辑表达式逻辑

21、表达式的一般形式为:表达式 逻辑运算符 表达式其中的表达式又可以是逻辑表达式,从而组成了嵌套的情形。例如:(a&b)&c,2.7 运算符和表达式,2023/5/25,45,例:逻辑运算main()char c=k;int i=1,j=2,k=3;float x=3e+5,y=0.85;printf(%d,%dn,!x*!y,!x);printf(%d,%dn,x|i 程序运行结果:0,01,00,1,2.7 运算符和表达式,2023/5/25,46,六、条件运算符与表达式1、条件运算符:?:2、条件表达式:表达式1?表达式2:表达式33、执行过程:先求解表达式1的值,若其为真,则求解表达 式2

22、的值,且整个条件 表达式的值等于表达式2;若表达式1为假,则求解表 达式3的值,且整个条件表 达式的值等于表达式3。,2.7 运算符和表达式,2023/5/25,47,优先级:高于赋值运算符,低于算术、关系、逻辑运算符 y=x=0?1:sin(x)/x等价于:if(x=0)y=1;else y=sin(x)/x;结合性:右结合 ab?a:cd?c:d等价于:ab?a:(cd?c:d),2.7 运算符和表达式,2023/5/25,48,例:条件运算main()int a,b,max;printf(n input two numbers:);scanf(%d%d,程序运行结果:input two

23、numbers:8 5max=8,2.7 运算符和表达式,2023/5/25,49,2.7 运算符和表达式七、逗号运算符和逗号表达式格式:表达式1,表达式2,表达式n作用:用于连接表达式优先级和结合性:级别最低,左结合如:a=3,3+a,a+计算过程:求解表达式1再求解表达式2,表达式I整个逗号表达式的值是表达式i的值。,2023/5/25,50,例:逗号运算main()int m=5,n=6,w=8,x,y;y=(x=m+n),(n+w);printf(y=%d,x=%dn,y,x);程序运行结果:y=14,x=11,2.7 运算符和表达式,2023/5/25,51,语言提供了6种位运算符:

24、&按位与|按位或 按位异或 取反 右移,2.8 位运算,2023/5/25,52,一、按位与运算按位与运算符&是双目运算符,其功能是参与运算的两数各对应的二进制位相与。只有对应的两个二进位均为1时,结果位才为1,否则为0。参与运算的数以补码方式出现。例如,9&5可写算式如下:00001001(9的二进制补码)&00000101(5的二进制补码)00000001(1的二进制补码)可见,9&5=1。,2.8 位运算,2023/5/25,53,二、按位或运算按位或运算符“|”是双目运算符,其功能是参与运算的两数各对应的二进制位相或。只要对应的两个二进位有一个为1时,结果位就为1。参与运算的两个数均以

25、补码出现。例如,9|5可写算式如下:00001001|0000010100001101(十进制为13)可见,9|5=13。,2.8 位运算,2023/5/25,54,三、按位异或运算按位异或运算符“”是双目运算符,其功能是参与运算的两数各对应的二进制位相异或。当对应的两个二进位相异时,结果为1。参与运算数仍以补码出现,如95可写成算式如下:00001001 00000101 00001100(十进制为12),2.8 位运算,2023/5/25,55,四、求反运算求反运算符“”是单目运算符,具有右结合性。其功能是对参与运算的数各个二进制位按位求反。例如,9(0000000000001001)的运

26、算为1111111111110110。,2.8 位运算,2023/5/25,56,五、左移运算左移运算符“”是双目运算符,其功能把“”左边的运算数的各个二进制位全部左移若干位,由“”右边的数指定移动的位数,高位丢弃,低位补0。例如:a4;指把a的各个二进制位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。,2.8 位运算,2023/5/25,57,六、右移运算右移运算符“”是双目运算符,其功能是把“”左边的运算数的各个二进制位全部右移若干位,“”右边的数指定移动的位数。例如:a2;表示把a=15(000001111)右移为00000011(十进制3)。,2.8 位运算,2023/5/25,58,七、位域(位段)1、位域的定义和位域变量的说明位域定义与结构定义相仿,其形式为:struct 位域结构名 位域列表;其中位域列表的形式为:类型说明符 位域名:位域长度,2.8 位运算,2023/5/25,59,2、位域的使用 位域的使用和结构成员的使用相同,其一般形式为:位域变量名 位域名位域允许用各种格式输出。,2.8 位运算,2023/5/25,60,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号