版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第 2章 基本数据类型、运算符与表达式,2.1 C语言的数据类型 2.2 常量与变量 2.3 整型数据 2.4 实型数据 2.5 字符型数据 2.6 各类数据混合运算 2.7 C语言的运算符与表达式 2.8 运算符的优先级及其结合性,Return,本章学习目标 熟悉C语言的数据分类 掌握常量的表示方法与变量赋初值的方法 掌握不同类型数据间的混合运算 掌握基本运算符及其表达式的使用,2.1 C语言的数据类型,C语言提供了以下一些主要数据类型:,说明: C语言为每个类型定义了一个标识符,称为类型名。例如:整型用int标识、字符型用char标识等。一个类型名由一个或几个关键字组成,仅用于说明数据属于
2、哪一种类型。, 对于基本数据类型,按取值是否可改变分为常量和变量两种。在程序执行过程中,其值不发生改变的量称为常量,取值可变的量称为变量。它们可与数据类型结合起来分类。例如,可分为整型常量、整型变量、字符常量、字符变量等。在程序中,常量是可以不经过说明而直接引用的,而变量则必须先说明后使用。,Return,在程序运行中,其值不改变的量称为常量。常量区分为不同的类型,如: 5、0、-7为整型常量 3.2、-4.68为实型常量 a、f为字符常量 常量从字面形式即可判别。也可用一个标识符代表一个常量,称为符号常量。习惯上,符号常量名用大写,变量名用小写字母表示,以示区别,例如: #define PI
3、 3.1415926,2.2 常量与变量,Return,2.2.1 常量,【例2-1】符号常量的使用。,已知圆半径为r,求圆周长c和圆面积s的值。 # define PI 3.1415926 main( ) float r,c,s; scanf(“%f”, ,在该程序中,用#define命令行定义PI,PI为定义的符号常量代表3.1415926,此后凡在程序中出现的PI都代表3.1415926。,从上面的例子可以看出使用符号常量的好处:一是含义清楚、见名知意。 看程序时从PI就可以知道它代表圆周率;二是修改方便,一改全改。 如要“# define PI 3.1415927”,则在程序中 所有出
4、现PI的地方值全部改为3.1415927。,Return,在程序运行时其值可以改变的量称为变量。 变量是由变量名、变量值和存储单元组成的。,2.2.2 变量,1变量名的命名规则:,变量名用标识符表示。在C语言中,用来对变量、符号常量、函数、数组等数据对象命名的有效字符序列统称为标识符。 C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须是字母或下划线。,下面列出的是合法的标识符,可作为变量名:abc, sum,f4,student_1,下面是不合法的标识符: 8h 以数字开头 -5 以减号开头 A* 出现非法字符* xy 出现非法字符,在使用标识符时须注意以下几点:,(1)
5、建议变量名的长度最好不要超过8个字符。 (2)标识符大小写是有区别的。 (3)标识符命名时应尽量有相应的含义,增加程序的可读性。,2变量的定义,在C语言中,要求对所有用到的变量必须先定义。 定义格式: 类型说明符 变量1,变量2,; 其中,类型说明符是C语言中的一个有效的数据类型,如整型类型说明符int、字符型类型说明符char等。,例如: int a, b, c ; char cc ; 在C语言中,要求对所有用到的变量作强制定义,也就是“先定义,后使用”。,Return,2.3.1 整型常量,2.3 整型数据,Return,整型常量即整常数。C语言中的整常数可用以下3种形式表示: (1)十进
6、制整常数。 十进制整常数没有前缀,其数码为09。 如:123、-234、0 (2)八进制整常数。 八进制整常数以0作为前缀。 如:0123、-0234,后面只能是有效的八进制数字07,若写成09就错了。 (3)十六进制整常数。 十六进制整常数的前缀为0X或0 x。其数码取值为09,AF或af。如:0 x123、-0 x234。,2.3.2 整型变量,1.整型数据在内存中的存放形式 整型数据在内存中是以二进制形式存放的。 例如,定义了一个整型变量a: int a ; /*定义a为整型变量*/ a = 25 ; /*给a赋以整数25*/,十进制数25的二进制形式为11001,Turbo C 2.0
7、和Turbo C+ 3.0为一个整型变量在内存中分配2个字节的存储单元(不同的编译系统为整型数据分配的字节数是不相同的),在这里我们假定每一个整型变量在内存中占2个字节。,2.整型变量的分类整型变量的基本类型符为int。可以根据数值的范围将变量定义为基本整型、短整型或长整型。,有以下3类整型变量: 基本整型,以int表示。 短整型,以short int表示。 长整型,以 long int表示。,在int前可以加上以下类型修饰符,用来改变和扩充基本类型的含义:,long 长 short 短 signed 有符号 unsigned 无符号,这些修饰符与int可以组合成以下6种整型变量。即:,有符号
8、的基本整型 signed int 无符号的基本整型 unsigned int 有符号的短整型 signed short int 无符号的短整型 unsigned short int 有符号的长整型 signed long int 无符号的长整型 unsigned long int,上面的方括号表示其中的内容是可选的。,【例2-2】下图保存了整数14的各种整型数据类型。,3.整型变量的定义在C语言程序中所有用到的变量都必须在程序中定义。,格式: 数据类型名 变量名;,【例2-3】变量的定义与使用。,/*exam2_3*/ main( ) int a, b, c, sum ; /* 定义整型变量a
9、、b、c、sum */ a=3, b=-4, c=9 ; /* a、b、c分别赋初值 */ sum = a+b+c ; /* 求a、b、c的和赋给变量sum*/ printf(“nsum= %d”, sum) ; /* 换行输出变量sum的值*/ ,程序运行结果:,sum=8,演示,4.整型数据的溢出一个int型变量的最大允许值为32767,如果再加1,那么结果会是什么样的呢?我们看下面这个例子。,【例2-4】整型数据的溢出。,/*exam2_4*/ main( ) int a, b ; a=32767 ; b=a+1 ; printf(na=%d, a+1=%dn, a, b) ; a=-3
10、2768 ; b=a-1 ; printf(na=%d, a-1=%dn, a, b) ; ,程序运行结果:,a=32767, a+1=-32768 a=-32768, a-1=32767,演示,5.整型常量的类型,(1)一个整数如果其值在-3276832767范围内,则认为是int型,可以赋给int型和long int型变量。 (2)一个整数如果其值超过了上述范围,在-21474836482147483647内,则认为是long int型,可赋给long int型变量。 (3)如果所使用的C语言版本确定short int和int型数据在内存中占据长度相同,则其表示范围与int型相同。因此一个
11、int型的常量也同时是一个short int型常量,可以赋给int型或short int型变量。 (4)常量中无unsigned型,但可以将一个非负值且在取值范围内的整数赋给unsigned型变量。 (5)在一个整常量后面加一个字母l或L,则认为是long int型常量。,Return,2.4 实型数据,1实型常量的表示方法,2.4.1 实型常量,C语言中的实数(浮点数)有两种表示形式: (1)十进制小数形式 由数字09和小数点和正负号组成(必须有小数点)。 (2)指数形式 也称为科学计数法,以幂的形式表示,以字母e或E后跟一个以10为底的幂数。其一般形式为:aeb,表示a10b,其中a是十进
12、制数,可以是整数或是小数,字母e或E之前必须要有数字,且字母e或E后面的指数b必须为整数,字母e或E的前后及数字之间不得有空格。,Return,2实型常量的类型,许多C编译系统将实型常量作为双精度实数来处理。这样可以保证较高的精度,缺点是运算速度降低。可以在实数的后面加字符f或F,如1.65f、654.87F,使编译系统按单精度处理实数。 实型常量可以赋值给一个float、double、long double型变量。根据变量的类型截取实型常量中相应的有效数字。,【例2-5】显示个人微机上不同类型变量所占的字节数。,/*exam2_5*/ #include main() printf(“the
13、bytes of the variables are:n”); printf(“int:%d bytesn”,sizeof(int); printf(“char:%d bytesn”,sizeof(char); printf(“short:%d bytesn”,sizeof(short); printf(“long:%d bytesn”,sizeof(long); printf(“float:%d bytesn”,sizeof(float); printf(“double:%d bytesn”,sizeof(double); printf(“long double:%d bytesn”,siz
14、eof(long double); ,程序运行结果:,the bytes of the variables are:int:2 byteschar:1 bytesshort:2 byteslong:4 bytesfloat:4 bytesdouble:8 byteslong double:10 bytes,演示,1实型数据在内存中的存放形式,2.4.2 实型变量,一个实型数据一般在内存中占4个字节(32位)。与整数存储方式不同,实型数据是按照指数形式存储的。系统将实型数据分为小数部分和指数部分,分别存放。,2. 实型变量的分类,语言的实型变量,分为两种:,(1)单精度型。 类型关键字为floa
15、t,一般占字节(32位)、提供位有效数字。 (2)双精度型。 类型关键字为double,一般占个字节、提供1516位有效数字。,3实型数据的舍入误差,实型变量是由有限的存储单元组成的,因此提供的有效数字总是有限的。在有效位以外的数字将被舍去。由此可能会产生一些误差。,【例2-6】实型数据的舍入误差。,/*exam2_6*/ main() float x,y; x=123456.789e5; y=x+20; printf(x=%f,y=%fn,x,y); ,程序运行结果:,x=12345678848.000000,y=12345678848.000000,演示,【例2-7】实型数据的定义和使用。
16、,/*exam2_7*/ main( ) float x ;double y ;x=123456.1234; y=123456.1234 ; printf(“x=%f,y=%lfn”,x,y); ,程序运行结果:,x = 123456.125000, y = 123456.123400,演示,字符型常量是用一对单引号()即撇号括起来的一个字符。只能用单引号括起来,不能用双引号或其它括号。 字符常量只能是单个字符,不能是字符串。 注意:a和A是不同的字符常量。 例如: d, R, =, $, ?等都是合法字符常量。,2.5字符型数据,2.5.1 字符常量,1. 定义,Return,2. 转义字符
17、,转义字符是一种特殊的字符常量,是以反斜杠开头的字符序列。,【例2-8】转义字符的使用。,/*exam2_8*/ main() printf(“x4Fx4B”); ,OK,程序运行结果为:,演示,1. 变量值的存储,2.5.2 字符变量,字符变量的定义形式如下: char a1,a2;,它表示a1和a2为字符型变量,各可以放一个字符,因此在本函数中可以用下面语句对a1、a2赋值: a1=x; a2=y;,2. 特性,(1)一个字符型数据,既可以字符形式输出,也可以整数形式输出。,(2)允许对字符数据进行算术运算,此时就是对它们的ASCII码值进行算术运算。,/*exam2_10*/ main(
18、) char ch1,ch2; ch1=a; ch2=b; printf(“ch1=%c,ch2=%cn”,ch1,ch2); printf(“ch1=%d,ch2=%dn”,ch1,ch2); ,【例2-10】用字符形式和整数形式输出字符变量。,程序运行结果:,ch1=a,ch2=b ch1=97,ch2=98,演示,【例2-11】字符数据的算术运算。,/*exam2_11*/ main() char ch1,ch2; ch1=a; ch2=B; printf(“ch1=%c,ch2=%cn”,ch1-32,ch2+32); /*字母的大小写转换*/ ,程序运行结果:,ch1=A,ch2=b
19、,演示,2.5.3 字符串常量,1.字符串常量的概念和字符串长度,字符串常量是用一对双引号“ ”括起来的若干字符序列。这里的双引号仅起到字符串常量边界符的作用,它并不是字符串常量的一部分。 字符串中字符的个数称为字符串长度。长度为0的字符串(即一个字符都没有的字符串)称为空串,表示为“”(一对紧连的双引号)。,2.字符串的存储,C语言规定:在存储字符串常量时,由系统在字符串的末尾自动加一个0作为字符串的结束标志。,如有一个字符串为“CHINA”,则它在内存中的 实际存储如下图所示:(存储长度为6),Return,2.6 各类数据混合运算,整型、实型、字符型数据之间可以混合运算。 运算规则:不同
20、类型的数据先转换成同一类型,然后进行计算。 转换方法:自动转换(隐式转换)、强制转换。,Return,自动转换(隐式转换)自动转换发生在不同类型数据进行混合运算时,由编译系统自动完成。自动转换规则:类型不同,先转换为同一类型,然后进行运算。,(1) 图中纵向的箭头表示当运算对象为不同类型时转换的方向。 (2) 图中横向向左的箭头表示必定的转换。,2. 强制转换:通过类型转换运算来实现。,格式:(类型说明符)表达式 功能:把表达式的结果强制转换为类型说明符所表示的类型。,例如: (double)a /*将变量a的值转换成double型*/ (int)(x+y) /*将x+y的结果转换成int型*
21、/,【例2-12】强制类型转换。,/*exam2_12*/ main() float x; int i; x=3.6; i=(int)x; printf(“x=%f,i=%d”,x,i); ,程序运行结果:,x=3.600000, i=3,x的类型仍为float型,值仍等于3.6。,演示,2.7 C语言的运算符与表达式,运算符:表示各种运算的符号。 表达式:使用运算符将常量、变量、函数连接起来的式子。,Return,算术运算符 (+ - * / % + -) 关系运算符 ( = !=) 逻辑运算符 (! i=430; h=i/60; m=i-60*h; printf(“n%d minutes:
22、 %d hour %d minutes”,i,h,m); ,程序运行结果:,430 minutes: 7 hour 10 minutes,演示,【例2-14】求表达式2+d-10的值。(设a=64,d=6),/*exam2_14*/ #include /*调用标准数学函数*/ main() float a,d,s; a=64,d=6; s=2*sqrt(a)+d-10; printf(“n%6.2f”,s); ,程序运行结果:,12.00,演示,2.7.2 自增与自减运算符,1. 功能 自增运算符+的作用是使变量的值增,自减运算符-的作用是使变量的值减。 2. 用法与运算规则 自增、自减运算符
23、都有两种用法:,(1)前置运算运算符放在变量之前:变量、变量(2)后置运算运算符放在变量之后:变量、变量,【例2-16】自增、自减运算符的用法。,/*exam2_16*/ main() int x=6, y ; printf(x=%dn,x) ; /*输出x的初值*/ y=+x ; /*前置运算*/ printf(y=+x: x=%d,y=%dn,x,y) ; y=x- ; /*后置运算*/ printf(y=x-: x=%d,y=%dn,x,y) ; ,程序运行结果:,x=6 y=+x: x=7,y=7 y=x-: x=6,y=7,演示,注意:在表达式中,连续使同一变量进行自增或自减运算时,
24、很容易出错,所以最好避免这种用法。,Return,2.7.3 赋值运算符和赋值表达式,1. 赋值运算符 赋值运算符为 “=”,它的作用是将一个数据赋给一个变量。,转换原则:先将赋值号右边表达式类型转换为左边变量的类型,然后赋值。,【例2-17】赋值运算中类型转换的规则。,/*exam2_17*/ main() int i=5 ; /*说明整型变量i并初始化为5*/ float a=3.5, a1; /*说明实型变量a和a1并初始化a*/ double b=123456789.123456789 ; /*说明双精度型变量b并初始化*/ char c=A ; /*说明字符变量c并初始化为A*/ p
25、rintf(i=%d, a=%f, b=%f, c=%cn, i, a, b, c) ; /*输出i,a,b,c的初始值*/ a1=i; i=a; a=b; c=i; /*整型变量i的值赋值给实型变量a1*/ /*实型变量a的值赋给整型变量i*/ /*双精度型变量b的值赋值给实型变量a*/ /*整型变量i的值赋值给字符变量c */ printf(i=%d, a=%f, a1=%f, c=%cn, i, a, a1, c) ; /*输出i,a,a1,c赋值以后的值*/ ,程序运行结果:,i=5,a=3.500000,b=123456789.123457,c=A i=3,a=123456792.000000,a1=5.000000,c=,演示,2. 复合的赋值运算符,在赋值符“=”前加上某些运算符,可以构成复合赋值运算符。即 +=, -=, *=, /=, %=, =, 执行赋值运算,将5+b的值赋给变量a,同时整个表达式的值就是刚才所赋的值。 赋值运算符的功能:一是计算,二是赋值。,Return,2.7.4 关系运算符及其表达式,1. 关系运算符 C语言提供了6种关系运算符: 大于 =大于或等于 =等于 !=不等于,2. 关系表达式用关系
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年剪辑师用工劳动合同
- 商场专柜联营协议书
- 个体与个体之间的借款协议文本
- 2024年教师劳动合同协议书
- 2024年肉鸡饲料购销合同全文-
- 消防行业劳务合同样例
- 投标保密承诺书转让协议2024年
- 广东省新鲜果蔬采购合同协议模板
- 集体土地上房屋搬迁补偿协议
- 企业环境清洁临时工雇佣合同
- 安保工作考核表
- 2024年广西高考生物试卷真题(含答案)
- 2024年国家公务员考试《行测》真题(副省级)
- 2023-2024学年冀教版八年级上册期中复习试卷(含解析)
- 广东省广州市2019年中考英语真题(含答案)
- 期货基础知识真题汇编5
- 电子政务概论-形考任务5(在线测试权重20%)-国开-参考资料
- 古代小说戏曲专题-形考任务2-国开-参考资料
- GB/T 451.2-2023纸和纸板第2部分:定量的测定
- 上海市七年级上学期语文期中考试试卷五套附参考答案
- 退场通知单范本
评论
0/150
提交评论