版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第第2 2章章 基本数据类型、运算符及表达式基本数据类型、运算符及表达式2.1 的基本数据类型的基本数据类型数数据据类类型型基本类型基本类型构造类型构造类型指针类型指针类型空类型空类型 void数值类型数值类型字符类型字符类型 char枚举类型枚举类型 enum整整 型型浮点型浮点型单精度型单精度型 float双精度型双精度型 double短整型短整型 short长整型长整型 long整型整型 int数组类型数组类型结构体类型结构体类型 struct共用体类型共用体类型 union2.2 常量与变量常量与变量常量常量程序运行的过程中,值不能被改变的量。程序运行的过程中,值不能被改变的量。含义:
2、含义:分类:分类:字面常量和符号常量。字面常量和符号常量。其中,字面常量又分为:其中,字面常量又分为:整型常量、实型常量、整型常量、实型常量、字符型常量(字符常量和字符串常量)字符型常量(字符常量和字符串常量)字面常量字面常量 整型常量整型常量形式:形式:(1 1)十进制整型常量:)十进制整型常量: 由由0 0至至9 9的数字组成,没有前缀,不能以的数字组成,没有前缀,不能以0 0起头。起头。(2 2)八进制整型常量:)八进制整型常量: 以以0 0(数字(数字0 0)为前缀,其后由)为前缀,其后由0 0到到7 7的数字组成,的数字组成, 没有小数部分。没有小数部分。 (3 3)十六进制整型常量
3、:)十六进制整型常量: 以以0 0 x x或或0 0X X为前缀,其后由为前缀,其后由0 0到到9 9的数字和的数字和A A到到F F (大小写均可)字母组成,没有小数部分大小写均可)字母组成,没有小数部分整型常量中的长整型数据可用整型常量中的长整型数据可用L L(或小写字母或小写字母l l)作后缀表示。作后缀表示。十进制十进制、八进制八进制和和十六进制十六进制三种形式三种形式字面常量字面常量 实型常量实型常量构成:构成: 由整数部分和小数部分组成的,只有由整数部分和小数部分组成的,只有十进制十进制方式。方式。形式:形式:(1)定点数形式定点数形式:它由数字和小数点组成。整数和小数部分可以省它
4、由数字和小数点组成。整数和小数部分可以省去一个,但不可两者都省,而且小数点不能省。去一个,但不可两者都省,而且小数点不能省。如:如:1.234,.123,123.,0.0等。等。(2)指数形式指数形式(或称科学表示法或称科学表示法):它是用整数或定点数后加它是用整数或定点数后加e(或或E)和指数来表示和指数来表示; 指数可正可负必须为整数指数可正可负必须为整数, 字母字母e之前必须有数字。之前必须有数字。如如: 1.234e3, 12.34e2 均合法表示均合法表示 1.234* *103;而而 e3,1e2.3,.e3,e 均不合法。均不合法。实型常量的后缀用实型常量的后缀用F/f 表示表示
5、单精度型单精度型。用。用L/l表示表示长双精度型长双精度型。例:例:下列四个选项中,均是合法的实型常量的是下列四个选项中,均是合法的实型常量的是 A、+2e-1 -3e4.5 5e3 B、-.91 .2e-0 -7.e8 C、123e+1 4567 +2e-1 D、8e-4 -5e+2 -e3B字面常量字面常量 字符型常量字符型常量分类分类:字符常量和字符串常量两类。字符常量和字符串常量两类。1. 1. 字符常量:字符常量:用一对用一对单引号单引号括起来的一个字符。括起来的一个字符。如:如:aa、AA、33、?等。等。特殊的特殊的转义字符常量转义字符常量:是将反斜扛是将反斜扛( )后面的字符转
6、换成另外的意思。后面的字符转换成另外的意思。转义字符及其含义转义字符及其含义转义字符转义字符含义含义nnvvrraa ddddddttbbff“ xhhxhh转义字符转义字符含义含义换行换行垂直制表垂直制表回车回车响铃响铃单引号单引号3 3位位8 8进制数代表的字符进制数代表的字符水平制表水平制表退格退格换页换页反斜线反斜线双引号双引号2 2位位1616进制数代表的字符进制数代表的字符2. 2. 字符串常量:字符串常量: 用一对用一对双引号双引号括起来的字符序列。括起来的字符序列。如如: The C Programming LanguageThe C Programming Language字
7、符串中可以是任一字符,包括转义字符。字符串中可以是任一字符,包括转义字符。当字符串本身包括双引号时,必须用转义字符当字符串本身包括双引号时,必须用转义字符“表示表示 ,从而防止二义性的解释。,从而防止二义性的解释。字面常量字面常量 字符型常量字符型常量如如: UNIX SYSTEM UNIX SYSTEM 字符串常量用连续的存储单元存储,每个字符占一个字符串常量用连续的存储单元存储,每个字符占一个字节,字节,且在末尾自动加一个字符串结束符且在末尾自动加一个字符串结束符 0 0 。注意:注意: a a 和和 aa的差别的差别 例:例:下列不合法的字符常量是下列不合法的字符常量是 A、n B、ab
8、 C、101 D、0B 符号常量符号常量用符号常量标识符来代表一个常量。用符号常量标识符来代表一个常量。如如: 用用PI代表圆周率代表圆周率,即即 3.1415926。优点优点: 含义清楚含义清楚,增加可读性。增加可读性。 在需要改变一个常量是能做到在需要改变一个常量是能做到“一改全改一改全改”, 增强了可维护性。增强了可维护性。用编译预处理命令中的用编译预处理命令中的宏定义宏定义来定义符号常量。来定义符号常量。宏定义格式宏定义格式:#define 标识符标识符 字符序列字符序列每行定义一个宏定义每行定义一个宏定义, 句末无分号。句末无分号。符号常量定义格式符号常量定义格式: #define
9、符号常量标识符符号常量标识符 常量常量如如: #define PI 3.1415926变量变量含义含义:程序运行过程中可以改变的量程序运行过程中可以改变的量基本要素基本要素:变量名变量名、类型、值。、类型、值。变量名变量名: 用标识符来表示用标识符来表示。变量的定义变量的定义格式格式: : 变量类型变量类型 变量名表列;变量名表列;变量类型变量类型: : 存储数据的类型存储数据的类型声明基本类型的关键字有:声明基本类型的关键字有: intint 、floatfloat、charchar、doubledouble可进行修饰扩充的有:可进行修饰扩充的有:shortshort、longlong、un
10、signedunsigned定义类型有三个定义类型有三个含义含义: 1 1、数学类型、数学类型2 2、存储空间、存储空间3 3、取值范围、取值范围 类型类型位位 范围范围char8-128 127 (-27 27-1) unsigned char80 255 ( 0 28-1 )short int16-32768 32767 (-215 215-1) unsigned short int 160 to 65535 ( 0 216-1 )int32-2147483648 2147483647 (-215 215-1) unsigned int320 4294967295 ( 0 232-1 )l
11、ong int64 (-263-1 263-1 )unsigned long int640 18446744073709551615 ( 0 264-1 )float32 -3.41038 3.41038 (7 位有效数字位有效数字 )double64 -1.710308 1.710308 (15 位有效数字位有效数字 )例例:下面四个选项中下面四个选项中,不正确的变量说明是不正确的变量说明是_A. unsigned int ui; B. short int g;C. double int A; D. int p,j,k;C变量名表列:变量名表列:为同一类型变量名的列表,各变量名之间用逗号隔开
12、。为同一类型变量名的列表,各变量名之间用逗号隔开。int m, M, n;/ /* * 定义定义m m,M M,n n为存放整型数据的整型变量为存放整型数据的整型变量 * */ /float a, b, c;/ /* * 定义定义a a,b b,c c为存放单精度型数据的实型变量为存放单精度型数据的实型变量 * */ /char c1,c2;/ /* * 定义定义c1c1,c2c2为存放字符型数据的字符型变量为存放字符型数据的字符型变量 * */ /注意:注意:1.1. 变量必须是变量必须是先定义,后使用;先定义,后使用;2.2. 定义变量的定义变量的声明语句声明语句必须必须放在放在本程序任何
13、可执行本程序任何可执行 语句之前或所在函数的语句之前或所在函数的可执行语句之前;可执行语句之前;3.3. 在在同一函数同一函数内,内,不能不能定义定义同名同名变量,而在变量,而在不同函不同函 数数中中可以可以定义定义同名同名变量,互不影响。变量,互不影响。4.4. 变量除了具有数据类型外,还有存储类型,变量变量除了具有数据类型外,还有存储类型,变量 的作用域与生存期等。的作用域与生存期等。变量的值变量的值含义:含义: 存储的数据值。存储的数据值。给变量赋值的给变量赋值的途径途径:1 1、用赋值运算符、用赋值运算符“”给变量赋初值给变量赋初值a、在定义变量的同时直接赋值;在定义变量的同时直接赋值
14、; 如:如:int a=3; float f=3.56;b b、先定义变量,再赋值;先定义变量,再赋值;如:如:int a; float f; a=3; f=3.45;c、可以给变量部分赋值可以给变量部分赋值如:如:int a,b,c=3;2 2、用、用scanfscanf( )( )从键盘读入数据;从键盘读入数据;如:如:int i; scanf(“%d”,&i); 3、在程序执行中,用赋值语句动态、在程序执行中,用赋值语句动态 的改变变量的值。的改变变量的值。如:如:int i=9; int j; j=i-1; j=j+1;注意:注意: 若对变量只定义而没有赋值,若对变量只定义而没
15、有赋值,则该变量的值是随机的。则该变量的值是随机的。2.4 运算符及表达式运算符及表达式1、按、按功能功能分为:分为: (1) (1) 算术运算符算术运算符 + - + - * * / % + - / % + - - (2) (2) 关系运算符关系运算符 = = = = != = (3) (3) 逻辑运算符逻辑运算符 ! & | ! & | (4) (4) 位运算符位运算符 & & (5) (5) 赋值运算符赋值运算符 = = 复合赋值运算符复合赋值运算符 (6) (6) 条件运算符条件运算符 ? : ? : (7) (7) 逗号运算符逗号运算符 , (8) (
16、8) 指针运算符指针运算符 * * 和和 & & (9) (9) 求字节数运算符求字节数运算符 sizeofsizeof (10) (10)强制类型转换运算符强制类型转换运算符 (类型标识符)(类型标识符) (11) (11)分量运算符分量运算符 (12) (12)下标运算符下标运算符 (13) (13)其它其它 函数名函数名( )( )2. 2. 运算符按其连接运算对象的个数可分为:运算符按其连接运算对象的个数可分为:(1 1)单目运算符(仅对一个运算对象进行操作)单目运算符(仅对一个运算对象进行操作) ! + - - + - -(取负号)(取负号) (类型标识符)(类型标识
17、符) * * & & sizeofsizeof(2 2)双目运算符(该运算符连接两个运算对象)双目运算符(该运算符连接两个运算对象) + - + - * * / % = = != / % = = != & | & | & | & | = = 复合赋值运算符复合赋值运算符(3 3)三目运算符(该运算符连接三个运算对象)三目运算符(该运算符连接三个运算对象) ? :(4 4)其它)其它 ( ) ( ) - -3. 3. 按优先级及结合性按优先级及结合性优先级:优先级:标志运算符在表达式中的运算顺序。标志运算符在表达式中的运算顺序。结合性:结合性:优先
18、级相同时,按优先级相同时,按从左到右从左到右或或从右到左从右到左的的结合顺序确定运算符的计算顺序。结合顺序确定运算符的计算顺序。分为二类:分为二类:(1 1)从右到左:从右到左:单目、三目和赋值运算符单目、三目和赋值运算符(2 2)从左到右:从左到右:其它运算符其它运算符算术运算符与算术表达式算术运算符与算术表达式1. 1. 算术运算符算术运算符单目运算符:单目运算符:- -( (取负取负) )、+ +( (取正取正) )双目算术运算符:双目算术运算符:+ +( (加加) )、- -( (减减) )、* *( (乘乘) )、/ /( (除除) )、% %( (余数余数) )说明:说明:1、整数
19、相除结果为整数,即只取商的整数部分;、整数相除结果为整数,即只取商的整数部分;2、%只适合整数运算只适合整数运算自增与自减运算符(自增与自减运算符( + + 与与 - - )说明:说明:单目运算符,操作对象只有一个且只能是单目运算符,操作对象只有一个且只能是单个变量单个变量。功能:功能:(1 1)取由该运算符构成的表达式的值)取由该运算符构成的表达式的值(2 2)实现变量)实现变量( (即运算对象即运算对象) )自身的加自身的加1 1或减或减1 1运算。运算。方式:方式:前缀方式:前缀方式:运算符在变量的前面运算符在变量的前面, ,如如+a a或或- - -a a 先自增先自增/ /自减,再引
20、用;自减,再引用;后缀方式:后缀方式:运算符在变量的后面运算符在变量的后面, ,如如a+ a+ 或或a- -a- - 先引用,再自增先引用,再自增/ /自减。自减。例:例:main()() int a=3; int b=+a,c; printf(”%d %dn”,a,b);); c=a+; printf(”%d %dn”,a,c););结果:结果:4 4 5 4# #include include .hmain( )main( ) char c1=A,c2,c3; char c1=A,c2,c3; int int i=5,j,k; i=5,j,k; c2=c1+; c2=c1+; c3=+c1
21、; c3=+c1; j=i- -; j=i- -; k= - -i; k= - -i; printf printf(c1=%c,c2=%c,c3=%cn,c1,c2,c3);(c1=%c,c2=%c,c3=%cn,c1,c2,c3); printf printf( (i=%d,j=%d,k=%dn,i,j,ki=%d,j=%d,k=%dn,i,j,k) ); ; 结果结果: : c1=C, c2=A, c3=Cc1=C, c2=A, c3=C i=3, j=5, k=3 i=3, j=5, k=3 2 2、算术表达式、算术表达式用算术运算符将运算对象连接起来,符合用算术运算符将运算对象连接起来
22、,符合语法规则,并能说明运算过程的式子。语法规则,并能说明运算过程的式子。赋值运算符与赋值表达式赋值运算符与赋值表达式赋值运算符:赋值运算符: = =一般形式:一般形式: 变量变量 = = 表达式表达式含义:含义:将赋值号将赋值号右边表达式右边表达式的值的值赋给赋给左边的变量左边的变量。如如: x=3; y=(x+2)x=3; y=(x+2)* *3;3;注意:注意:(1)(1)先计算赋值运算符右侧表达式先计算赋值运算符右侧表达式, ,再赋值。再赋值。(2)(2)赋值运算符的左侧必须是一个变量。赋值运算符的左侧必须是一个变量。如: 3 3= =x; x; (x+y)(x+y)= 5;= 5;
23、/* 都错误 */复合赋值运算符复合赋值运算符一般形式:一般形式:变量变量 = = 变量变量 运算符运算符 表达式表达式 ; ;缩写式:缩写式:变量变量 运算符运算符 = = 表达式表达式; ; 如如: :x = x + y;x = x + y;x += y;x += y;x = x x = x * * (y + z); (y + z);x x * *= y + z;= y + z; 复合赋值运算符共有复合赋值运算符共有1010种:种: += +=(加赋值)(加赋值) -= -=(减赋值)(减赋值) * *= =(乘赋值)(乘赋值) /= /=(除赋值)(除赋值) %= %=(求余赋值)(求余
24、赋值) &= &=(位与赋值)(位与赋值) |= |=(按位或赋值)(按位或赋值) = =(按位异或赋值)(按位异或赋值) = = =(右移位赋值)(右移位赋值)例:例: # include main( ) int a; float b; a*=a/=(a=7)-(b=4.5); printf(a=%d, b=%fn,a, b);结果:结果:a=4,b=4.500000例例: int m=7,n=12; 则能得到值为则能得到值为3的表达式是的表达式是_ A. n%=(m%=5) B. n%=(m-m%5) C. n%=m-m%5 D. (n%=m)-(m%=5) D逗号运算符和
25、逗号表达式逗号运算符和逗号表达式一般形式一般形式:表达式表达式1,表达式表达式2,表达式表达式n例例:z=(y=(x=4*5,x*5),x+25)结果结果: x=20, y=100, z=45综合例题综合例题:int k=7;float a=2.5,b=4.7;则表达式则表达式 a+k%3*(int)(a+b)%2/4的值的值_A. 2.5 B. 2.75 C. 3.5 D. 0.0 A各类数值型数据间的混合运算与类型转换各类数值型数据间的混合运算与类型转换语言规定:语言规定:相同类型相同类型数据直接进行运算数据直接进行运算, ,运算结果是原数据类型运算结果是原数据类型;不同类型不同类型的数据
26、的数据先转换成同一类型先转换成同一类型,然后才可进行运算然后才可进行运算。两种转换形式:两种转换形式:(1)(1)隐含转换隐含转换( (隐式转换隐式转换) );(2)(2)强制转换强制转换( (显式转换)显式转换)隐含转换隐含转换1 1、运算转换运算转换不同类型数据混合运算时不同类型数据混合运算时2 2、赋值转换赋值转换把一个值赋给与其类型不同的变量时把一个值赋给与其类型不同的变量时3 3、输出转换输出转换输出时转换成指定的输出格式输出时转换成指定的输出格式4 4、函数调用转换函数调用转换实参与形参类型不一致时转换实参与形参类型不一致时转换由语言系统自动完成的由语言系统自动完成的doublefloatlongunsignedintchar,short低低高高转换规则:转换规则:注意:注意:(1) (1) 转换按箭头方向不是逐步进行转换按箭头
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年天祝藏族自治县医疗事业单位人员招聘考试备考试题及答案解析
- 2026年竹山县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年马边彝族自治县医疗事业单位人员招聘笔试参考题库及答案解析
- 2026年修武县医疗事业单位人员招聘考试备考题库及答案解析
- 2026年平顺县带编教师招聘笔试备考题库及答案解析
- 2026年西盟佤族自治县医疗事业单位人员招聘笔试备考题库及答案解析
- 2026年茂县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年涟水县医疗事业单位人员招聘考试参考题库及答案解析
- 2026年翁源县医疗事业单位人员招聘笔试备考试题及答案解析
- 2026年灵石县医疗事业单位人员招聘考试备考试题及答案解析
- 普华永道:2026年全球AI就业晴雨表-AI时代就业的两种未来图景(2026年-中文版)
- 2026秋小学西师大版音乐二年级上册(新教材)教学计划含教学进度表
- 《物流成本管理》全套教学课件
- 小学科学苏教版(新教材)六年级上册第一单元《物质的变化》单元小结课件
- 2026年计算机专业综合应用题库
- 油田集输系统技术培训课件
- 阅读理解(专项训练)五升六英语暑假专项提升(人教PEP版)
- 小区绿化养护合同
- 2026年秋季六年级数学上册教学计划(人教版)
- GB/T 32741-2025肥料、土壤调理剂和有益物质分类
- 当代西方社会思潮研究
评论
0/150
提交评论