第二章数据描述与基本操作

上传人:pu****.1 文档编号:579508283 上传时间:2024-08-26 格式:PPT 页数:36 大小:502.04KB
返回 下载 相关 举报
第二章数据描述与基本操作_第1页
第1页 / 共36页
第二章数据描述与基本操作_第2页
第2页 / 共36页
第二章数据描述与基本操作_第3页
第3页 / 共36页
第二章数据描述与基本操作_第4页
第4页 / 共36页
第二章数据描述与基本操作_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《第二章数据描述与基本操作》由会员分享,可在线阅读,更多相关《第二章数据描述与基本操作(36页珍藏版)》请在金锄头文库上搜索。

1、第二章 数据描述与基本操作n数据类型数据类型n基本数据类型基本数据类型n常量常量n变量变量n运算符与表达式运算符与表达式对应教材第三章,自学教材第二章。对应教材第三章,自学教材第二章。标识符标识符n定义定义: 用来标识用来标识(表示表示)变量、常量、函数等的变量、常量、函数等的字符序列字符序列字符序列字符序列n组成组成:n只能由只能由字母字母、数字数字、下划线下划线组成,且第一个字母组成,且第一个字母必须是字母或下划线必须是字母或下划线n区分区分大小写大小写n不能使用关键字不能使用关键字n命名原则命名原则n见名知意见名知意n不宜混淆不宜混淆 如如l与与I, o与与0nmin_length &

2、max_informationC数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型void字符类型字符类型char整整 型型实实 型型单精度型单精度型float双精度型双精度型double数组数组结构体结构体struct共用体共用体union短整型短整型short长整型长整型long整型整型int数据类型决定:1. 数据占内存字节数2. 数据取值范围3. 允许的操作枚举类型枚举类型enum基本数据类型基本数据类型类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-32768 32767(signed)short16-32768 32767(

3、signed)long32-2147483648214748364716Unsigned int0 65535320 4294967295unsigned longunsigned short160 65535有有float323.4e-38 3.4e38有有double641.7e-308 1.7e308有有char8-128 127无无unsigned char80 255n一般用大写字母一般用大写字母n是宏定义预处理命令,不是是宏定义预处理命令,不是C语句语句n直接常量直接常量: :n整型常量整型常量 n实型常量实型常量 n字符常量字符常量 n字符串常量字符串常量n常量常量n定义:程序运

4、行时其值不能改变的量(即常数)定义:程序运行时其值不能改变的量(即常数)n分类分类: :n符号常量符号常量: :用标识符代表常量用标识符代表常量n定义格式:定义格式: #define#define 符号常量符号常量 常量常量例例 符号常量举例符号常量举例#define PRICE 30main() int num,total; num=10; total=num*PRICE; printf(total=%d,total);运行结果:运行结果:total=300&整型常量(整常数)整型常量(整常数)n三种形式:三种形式:n十进制整数:由数字十进制整数:由数字09和正负号表示和正负号表示.如如 1

5、23,-456,0n八进制整数:由数字八进制整数:由数字0开头开头,后跟数字后跟数字07表示表示.如如0123,011n十六进制整数:由十六进制整数:由0x开头开头,后跟后跟09,af,AF表示表示. 如如0x123,0Xff例例 12 与与 12L例例 30000 为为int型型 65536 为为long int 型型n整型常量的类型整型常量的类型n根据其值所在范围确定其数据类型根据其值所在范围确定其数据类型n在在整常量后加字母整常量后加字母l或或L,认为它是认为它是long int 型常量型常量问题:问题:0123 = ( )100x123 = ( )100Xff = ( )1083291

6、255问题:问题:0123 = ( )100x123 = ( )100Xff = ( )10&实型常量(实数或浮点数)实型常量(实数或浮点数)n表示形式:表示形式:n十进制数形式:(必须有小数点)十进制数形式:(必须有小数点) 如如0.123, .123, 123.0, 0.0, 123.n指数形式:(指数形式:(e或或E之前必须有数字;指数必须之前必须有数字;指数必须为整数)如为整数)如12.3e3 ,123E2, 1.23e4 , e-5 , 1.2E-3.5 n实型常量的类型实型常量的类型n默认默认double型型n在在实型常量后加字母实型常量后加字母f或或F,认为它是认为它是float

7、型型&字符常量字符常量n定义定义:用用单引号单引号括起来的单个括起来的单个普通字符普通字符或或转义字符转义字符. n字符常量的字符常量的值值:该字符的:该字符的ASCII码码值值 = = !=4逻辑运算符逻辑运算符 ! |5位运算符位运算符 | &6条件运算符条件运算符 ? :7逗号运算符逗号运算符 ,8指针运算符指针运算符 * &9求字节数运算符求字节数运算符 sizeof10. 分量运算符分量运算符 11下标运算符下标运算符 12其它其它 如函数调用运算符()如函数调用运算符()学习运算符应注意:学习运算符应注意:(1)掌握运算符的功能;)掌握运算符的功能;(2)搞清运算符与运算量间的关系

8、:)搞清运算符与运算量间的关系:n要求运算量个数要求运算量个数n要求运算量类型要求运算量类型 (3)清楚运算的优先级别;)清楚运算的优先级别;(4)明确结合方向(在一个运算量的两侧有两)明确结合方向(在一个运算量的两侧有两个相同优先级别的运算符,则按结合方向顺序个相同优先级别的运算符,则按结合方向顺序处理);处理);(5)明白结果的类型(即表达式的类型)。)明白结果的类型(即表达式的类型)。算术运算符和表达式算术运算符和表达式n基本算术运算符:基本算术运算符: + - * / %n结合方向:从左向右结合方向:从左向右n优先级:优先级: - * / % + - (2) (3) (4)说明:说明:

9、n“-”可为可为单目单目运算符时运算符时, 右结合性右结合性(只有右边有运只有右边有运算量算量)n两整数相除,结果为整数两整数相除,结果为整数n“%”要求两侧均为整型数据要求两侧均为整型数据例例 5/2 = 2 -5/2.0 = -2.5例例 5%2 = 1 -5%2 = -1 1%10 = 1 5%1 = 0 5.5%2 ( )算术运算符和表达式(续)算术运算符和表达式(续)n自增、自减运算符自增、自减运算符+ -n作用:使变量值加作用:使变量值加1或减或减1n种类:种类:n前置前置 +i, -i (先执行先执行i+1或或i-1,再使用再使用i值)值)n后置后置 i+,i- (先使用先使用i

10、值值,再执行再执行i+1或或i-1)例例 j=3; k=+j; j=3; k=j+; j=3; printf(“%d”,+j); j=3; printf(“%d”,j+); a=3;b=5;c=(+a)*b; a=3;b=5;c=(a+)*b; /*k=4, j=4*/*k=3, j=4*/*4*/*3*/*c=20, a=4*/*c=15, a=4*/n说明:说明:n+ - 不能用于常量和表达式不能用于常量和表达式,如如5+,(a+b)+n+ -结合方向:结合方向: 自右向左自右向左n优先级:优先级:- + - * * / % + - (2) (3) (4)n注意注意+、-的副作用的副作用例

11、例 -i+ -(i+) i=3; printf(“%d”,-i+); /*-3*/ 例例 j+k; (j+)+k;例例 -i+ i=3; printf(“%d”,-i+); 算术运算符和表达式(续)算术运算符和表达式(续)从左到右尽可能多地将从左到右尽可能多地将若干字符组成一个运算若干字符组成一个运算符符n简单赋值运算符简单赋值运算符n符号:符号: =n格式:格式: 变量标识符变量标识符 = 表达式表达式n作用:将一个数据(常量或表达式)赋给一个变量作用:将一个数据(常量或表达式)赋给一个变量n复合赋值运算符复合赋值运算符n种类种类:+= -= *= /= %= = &= = |=n含义:含义

12、: exp1 op= exp2 exp1 = exp1 op exp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例例 a=3; d=func(); c=d+2;赋值运算符和表达式赋值运算符和表达式n说明:说明:n结合方向:结合方向:自右向左自右向左n优先级:优先级:14n左侧必须是变量,不能是常量或表达式左侧必须是变量,不能是常量或表达式n赋值表达式的值与变量值相等,且可嵌套赋值表达式的值与变量值相等,且可嵌套n赋值转换赋值转换规则:使赋值号右边表达式值规则:使赋值号右边表达式值自动自动转换成其左转换成其左边变量的类型边变量的类型错误:错误: 3=x-2*y; a+b=

13、3;例例 float f; int i; i=10; f=i;则则 f=10.0例例 int i; i=2.56; 结果结果i=2;例例:a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2)/*表达式值为表达式值为5,a,b,c值为值为5*/* b=5,a=5*/*表达式值表达式值11,c=6,a=11*/*表达式值表达式值10,a=10,b=4,c=6*/*表达式值表达式值5,a=5,b=10,c=2*/赋值运算符和表达式赋值运算符和表达式(续)(续)赋值运算符和表达式赋值运算符和表达式(续)(续)n赋值类运算符的副作用及限制赋值类运算

14、符的副作用及限制 语言中允许在一个表达式中使用一个以上的赋值语言中允许在一个表达式中使用一个以上的赋值类运算符。类运算符。 对人的影响和副作用,易造成误解。对人的影响和副作用,易造成误解。 .程序尽可能写得明了易懂一些;程序尽可能写得明了易懂一些; .加上一些不必要的括号。加上一些不必要的括号。 对机器的副作用,不定解。对机器的副作用,不定解。 交换律不再适用。交换律不再适用。例例: a=12; a+=a-=a*a;/*a=-264 等价于等价于a=a+(a=a-(a*a)*/例例:int a=2; a%=4-1; a+=a*=a-=a*=3; /*a=0 等价于等价于a=a+(a=a*(a=

15、a-(a=a*3)*/n形式:形式:表达式表达式1,表达式表达式2,表达式表达式nn结合性:从左向右结合性:从左向右n优先级:优先级: 15n逗号表达式逗号表达式的值:等于表达式的值:等于表达式n的值的值n用途:用途:常用于循环常用于循环for语句中语句中例例 a=3*5,a*4 a=3*5,a*4,a+5例例 x=(a=3,6*3) x=a=3,6*a例例 a=1;b=2;c=3; printf(“%d,%d,%d”,a,b,c); printf(“%d,%d,%d”,(a,b,c),b,c); /*a=15,表达式值表达式值60*/*a=15,表达式值表达式值20*/*赋值表达式,表达式值

16、赋值表达式,表达式值18,x=18*/*逗号表达式逗号表达式,表达式值表达式值18,x=3*/*1,2,3*/ /*3,2,3*/逗号运算符和表达式逗号运算符和表达式n关系运算符关系运算符n种类种类: = !=n结合方向:自左向右结合方向:自左向右n优先级别:优先级别:=!=优先级优先级6(高)(高)优先级优先级7(低)(低)例例 ca+b /*c(a+b)*/ ab!=c /*(ab)!=c*/ a=bc /*a=(bc /*a=(bc)*/n关系表达式的值:是逻辑值关系表达式的值:是逻辑值“真真”或或“假假”,用,用1和和0表表示示例例 int a=3,b=2,c=1,d,f; ab (a

17、b)=c b+cb f=abc/*表达式值表达式值1*/*表达式值表达式值1*/*表达式值表达式值0*/*d=1*/*f=0*/关系运算符和表达式关系运算符和表达式n关系运算注意:关系运算注意:区分区分“=”与与“=”例例 5278在在C中是允许的,值为中是允许的,值为 0例例 int i=1, j=7,a; a=i+(j%4!=0); 则则a= 2例例 a0 结果为结果为 A100 结果为结果为10关系运算符和表达式关系运算符和表达式(续)(续)应避免对应避免对实数实数作相等或不等的判断作相等或不等的判断例例 1.0/3.0*3.0=1.0 结果为结果为 0可改写为:可改写为:fabs(1.

18、0/3.0*3.0-1.0)1e-6此例有此例有错!错!ab!a!ba&ba|b真真假假真真假假假假假假真真真真n逻辑运算符逻辑运算符n种类:种类: ! & |n逻辑运算真值表逻辑运算真值表nC语言中语言中,运算量运算量: 0表示表示“假假”, 非非0表示表示“真真”, 运算结果运算结果: 0表示表示“假假”, 1表示表示“真真”,真真假假假假假假假假假假真真真真假假假假真真真真真真假假真真真真逻辑运算符和表达式逻辑运算符和表达式! (2)& (11)| (12)高高低低例例 a=x & xb&xy a=b|x=y !a|abl优先级:优先级:l结合方向:结合方向:! :从右向左从右向左& :

19、从左向右从左向右| :从左向右从左向右/* (a=x) & (xb)&(xy)*/*(a=b)|(x=y)*/*(!a)|(ab)*/逻辑运算符和表达式逻辑运算符和表达式(续)(续)! (2)& (11)| (12)高高低低l优先级:优先级:l结合方向:结合方向:! :从右向左从右向左& :从左向右从左向右| :从左向右从左向右例例 a=4; b=5; !a a&b a|b !a|b 4&0|2 53&2|83)&2|(8b)&(n=cd)/*结果结果m=0,n=1*/逻辑运算符和表达式逻辑运算符和表达式(续)(续) 条件运算符与表达式条件运算符与表达式n一般形式:一般形式: expr1 ?

20、expr2 : expr3n功能:相当于条件语句,但不能取代一般功能:相当于条件语句,但不能取代一般if语句语句例例 if (ab) printf(“%d”,a); else printf(“%d”,b);printf(“%d”,ab?a:b);例例 求求 a+|b| printf(“a+|b|=%dn”,b0?a+b:a-b);expr1取取expr2值值取取expr3值值非非0=0例例 (a=b)?Y:N (x%2=1)?1:0 (x=0)?x:-x (c=a & cb?a:cd?c:d ab?a:(cd?c:d)nexpr1、expr2、expr3类型可不同,表达式值取较高类型可不同,表

21、达式值取较高的类型的类型例例 x?a:b /*x=0,表达式值为表达式值为b; x0,表达式值表达式值为为a*/ xy?1:1.5 /*xy ,值为值为1.0; xy ,值为值为1.5*/运算符与表达式小结运算符与表达式小结n运算符优先级和结合性运算符优先级和结合性 一般而言,单目运算符优先级较高,赋一般而言,单目运算符优先级较高,赋值运算符优先级低;算术运算符优先级较高,值运算符优先级低;算术运算符优先级较高,关系和逻辑运算符优先级较低。关系和逻辑运算符优先级较低。 多数运算符多数运算符具有左结合性,单目运算符、三目运算符、具有左结合性,单目运算符、三目运算符、 赋值运算符具有右结合性。赋值运算符具有右结合性。n表达式表达式 表达式是由运算符连接常量、变量、函表达式是由运算符连接常量、变量、函数所组成的式子。数所组成的式子。 每个表达式都有一个值和每个表达式都有一个值和类型。类型。 表达式求值按运算符的优先级和结合表达式求值按运算符的优先级和结合性所规定的顺序进行。性所规定的顺序进行。

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号