版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第三章数据类型、运算符、表达式,数据类型分类,数据类型,基本类型,整型,实型,字符型,枚举类型,双精度,单精度,构造类型,指针类型,空类型,数组类型,共同体类型,结构体类型,常量,常量: 在程序运行过程中,其值不能被改变的量。 习惯上,符号常量名用大写,变量用小写,以示区别,符号常量: 代表常量的标识符(符号) 符号常量在程序开头定义,并且在程序中不可以改变值。 只可以在定义处修改,并且所有要替代处都做出相应的修改。 习惯上符号常量用大写字符。,例:求园面积,#define PI 3.14 main() float r,s; r=2; s=PI*r*r; printf(s=%f,s); ,EX
2、P0301.C,变量,变量:在程序运行过程中,其值可以被改变的量。 变量在内存中占据一定的存储单元。 变量类型决定存储单元的大小。 变量名表示存储单元的值(该值在程序运行过程中可能随时变化)。,i,int i; i=9;,?,9,int a,b,c; a=123; b=456; c=a+b;,123,456,579,标识符,变量用标识符表示,即变量的名字。 标识符的要求: 以字母、数字、下划线组成 且第一个字符必须为字母或下划线 一般长度取8个字符(建议,不同系统) 关键字不能作为标示符,合法 float a;,大写字母和小写字母被认为是两个不同的字符。 int sum,SUM; 习惯上,变量
3、名用小写字母表示 符号常量习惯上用大写字母标识。,程序设计中变量的命名: 必须满足C语言的语法规定。 应该“见其名,知其意”,容易理解,方便阅读程序。 int sum; float average,area;,一定要先定义、后使用!,编译程序不能翻译未定义变量。 没有开辟空间,把数据放到哪里去? 编译程序在编译时根据变量类型确定存储单元的数量。 不同类型的变量占据的内存单元大小不同。,编译程序在编译时要根据变量类型进行语法检查。 例,整型变量a、b可以进行“求余”运算a%b 若把a、b定义为实型变量,则上述运算非法。,常量类型与变量类型比较,常量:整型、实型、字符型、字符串型 变量:整型、实型
4、、字符型 没有字符串型变量,字符串由字符型数组来存放!,整型数据,整型常量: 10进制数 8进制数(以0开头、0-7) 16进制数(以0 x开头、0-f),能够进行各类数据的转换(含2进制),数制转换,2进制到10进制,20+24+26+27+29+212+214= 1+16+64+128+512+4096+16384= 21201,10进制转换为2进制,(20484096),0,0,0,0,1,1,1,0,1,0,1,1,0,0,0,1,2进制转换为8进制,6,2,7,3,5,1,0153726,2进制转换为16进制,6,D,7,D,0 xD7D6,8进制转换为2进制,0153726,16进
5、制转换为2进制,0 xD7D6,8进制转换为10进制,0123,3*80+2*81+1*82= 3*1+2*8+1*64= 83,10进制转换为8进制,(64512),1,2,3,0123,10进制转换成8进制也可以先转换成2进制,再转换成8进制 10进制与16进制的转换与8进制类似 16进制与8进制之间的转换略,整型变量分类,有符号,无符号,(有符号)基本整型 int,(有符号)短整型 short,(有符号)长整型 long,无符号基本整型 unsigned int,无符号长整型 unsigned long,无符号短整型 unsigned short,整型变量,整型变量在内存的存储形式,整型
6、变量在内存中是以二进制数形式存在的 不同类型的整型变量分别占据2或4个字节。 数制以补码形式表示(正数负数都是),正数补码就是其本身 负数补码:绝对值二进制按位求反加1得到 第一位为符号位(有符号时) 0表示正数、1表示负数,int a=9;,+1,int a=-9;内存中如何存储?,整型变量分类及参数,基本整型能表示的范围?,unsigned int a; a能表示多少的范围? 2字节16位二进制数 最大1111111111111111 最小0000000000000000 0到65535(216-1),基本整型能表示的范围?,int a; a能表示多少的范围? 最高位表示符号 最大0111
7、111111111111 32767(215-1) 最小1000000000000000 ?,int a; a的值是多少?,-1,按位求反,6,添负号,-6,求负数补码 负数绝对值(添负号) 按位求反 +1,负数补码转换成十进制 (上面的逆过程)?,int a; a的值是多少?,-1,按位求反,32768,添负号,-32768,基本整型能表示的范围?,int a; a能表示多少的范围? 最高位表示符号 最大0111111111111111 32767(215-1) 最小1000000000000000 ?,-32768,整型变量的定义,int a,b; unsigned short c,d;
8、long e,f; unsigned g; 要在函数的开头部分定义(声明)变量。,整型常量的类型,1、整型常量的值在-32768+32767范围内,编译器认为是int类型。 2、整型常量的值超过上述范围,而在 -214748648+214748647范围内,编译器认为是long类型。,3、在整型常量的值后面家字母L(l),则告诉编译器,把该整数常量作为long类型处理。 例:123L、0L 常量没有unsigned类型。,实型数据,实型常量 实数(real)又称为浮点数(float),表达方式: 小数表示: 0.123 、 .123 、 123.0 、 123. 、 0.0 (必须有小数点)
9、指数表示: 123e3 或 123E3 、123E-2,实型数据内存存储方式,实型变量类型及参数,实型变量的定义,float x,y; /* 指定x、y为单精度实型变量 */ double z; /* 指定z为双精度实型变量 */,实型常量不分float型和double型。 一个实型常量可以赋给一个float型或double型变量。 根据变量的类型截取实型常量中相应的有效位数字。,float a; double b; a=12345.6789; b=12345.6789; 单精度a只能接收7位 双精度b能接收9位,作业: P65 3.3 (计算各种数制,除二进制外不算补码) 3.4 (除了ch
10、ar型),字符型数据,字符常量: 单引号括起来的一个字符 如:a、x、D、?、$。 注意:a和A是不同的字符常量。(区分大小写),如何表示字符 , 开头的字符序列称为转义序列 使其后字符变为另外的意义,转义字符,n t b r,换行 横向跳格 退格 回车,如何表示 ,制表区1,制表区2,f,g,字符变量,字符变量用来存放字符常量 定义形式及赋值: char c1,c2; c1=d; c2=a; 字符常量用单引号括起来,字符数据在内存中的存储形式及其使用方法,一个字符变量在内存中占一个字节 将一个字符常量放到一个字符变量中 是把该字符的ASCII码放到存储单元中 例,a的ASCII码为97,字符
11、以ASCII码存储,其存储方式与整数类似。 C语言允许字符和整数之间进行运算。 字符型变量和整型变量某些情况可互用 P374 附录I (常用字符与ACSII代码表),输出如何?,main() char a,b; a=A; b=65; printf(a: %c %dn,a,a); printf(b: %c %dn,b,b); ,EXP0302.C,a: A 65 b: A 65,输出如何?,main() int a,b; a=A; b=65; printf(a: %c %dn,a,a); printf(b: %c %dn,b,b); ,EXP0303.C,a: A 65 b: A 65,输出如何
12、?,main() int a; char b; a=A+15; b=D+32; printf(a: %c %dn,a,a); printf(b: %c %dn,b,b); ,EXP0304.C,a: P 80 b: d 100,如何输出 a=39; b= ; c=92; printf(a: %c %dn,a,a); printf(b: %c %dn,b,b); printf(c: %c %dn,c,c); ,EXP0305.C,a: 39 b: 34 b: 92,输出如何?,main() char c1,c2,c3,c4,c5,c6; c1=65; c2=32; c3=97; c4=10; c
13、5=48; c6=1; printf(%c%c%c%c%c%c, c1,c2,c3,c4,c5,c6); ,EXP0306.C,Aa 0,输出如何?,main() printf(101x20141x0a060 x01); printf(nn); ,EXP0307.C,Aa 0,字符串常量,字符常量:单引号括起来的一个字符。 字符串常量:双引号括起来的字符序列 How do you do. CHINA $123.45 a ( a ? ),字符串常量在内存中的存放,字符串常量在内存中的存放: 每一个字符均以其ASCII码存放 最后添加一个空字符 即0 字符串常量CHINA存放在内存中的情况是:,C
14、,H,I,N,A,0,注意:字符变量中只能存放一个字符,不能存放字符串! char c; c = a; /* 字符a */ c = a; /* 字符串a*/,变量赋初值,在定义变量的同时指定其初值 例: int a = 3; float f = 3.56; char c = a; int a, b, c = 5;,注意:多个变量指定相同的初值时 定义a,b,c三个整型变量均赋初值为3: int a = 3, b = 3, c = 3; int a = b = c = 3;,可是在付值时允许: int a,b,c; a=b=c=3;,各类数值型数据间的混合运算,整型、实型(包括单、双精度)、字符
15、型数据可以混合运算。 例:10 + a + 1.5 - 8765.1234 * b 混合运算时,先转换成同一种类型,然后进行运算。,转换规则,例:10+a+i*f-d/e (int i; float f; double d; long e;),C运算符简介,1算术运算符 (+ - * / 等) 2关系运算符 ( = /* 将a的值转换为double类型 */ (int)(x+y); /* 将x+y的值转换为int类型 */ (float)(5%3); /* 将5%3的值转换为float类型 */,(int)(x+y); (int)x+y; (int)(x); (int)x; int(x); 说
16、明:强制类型转换时,得到一个所需类型的中间变量,原来变量的类型不发生变化。,17/10/3 (float)17/10/3 (float)(17/10)/3 0 0.567 0.333,自增、自减运算符,自增:使变量的值加1 自减:使变量的值减1 +i; /* 在使用i之前使i加1 */ -i; /* 在使用i之前使i减1 */ i+; /* 在使用i之后使i加1 */ i-; /* 在使用i之后使i减1 */,i = 3;j=+i; /*先使i加1,再赋给j,执行后j=4, i=4*/ i = 3;j=i+; /*先把i赋给j,再使i加1,执行后j=3,i=4*/ i=3; printf(“%
17、d”,+i);printf(“%d”,i+);,注意: +和-只能用于变量,不能用于常量和表达式。 5+; (a+b)+; #define ONE 1; ONE+;,+和-的结合方向为“右结合”。 i=3; printf(“%d”,-i+); -i+(负值运算符-和自增运算符优先级相同) -(i+) (-i)+ 输出是 3 输出后i值为4,有关表达式使用中的问题,表达式中使用+或-易错 i = 3;k = (i+) + (i+) + (i+) i+先使用i,再加1执行后:k = 3 + 3 + 3 = 9 、i = 6 k = (+i) + (+i) + (+i) +i先加1 ,并且执行了3次
18、,再使用i,执行后:k = 6 + 6 + 6 = 18 、i = 6,出现多个运算符时,编译器在处理时尽可能多的(从左到右)将若干个字符组合成一个运算符 i+j; (i+)+j i+(+j),i = 3; printf(%d,%d,i,i+); Turbo C中,调用函数时,实际参数的处理顺序是从右到左。 先右:i+,先使用i(3),再使i加1。 后左: i (现在值为4) 因此,输出结果:4,3,对于初学者来说,要尽可能的使用意义明确(虽然书写要麻烦一些)的语句,尽量不要将-or +与其他运算符一起使用: 例:j=i+; 可以等效为: j=i; i=i+1;,赋值运算符和赋值表达式,赋值运算符:= 作用:将一个表达式的值赋给变量 例:a = 3 /*常数3赋给变量a,常数是特殊的表达式*/ a = b + c +
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 萍乡市红十字会面向社会公开招聘笔试模拟试题及答案详解
- 人工智能在证券行业数据挖掘中的应用-第7篇
- 2026年山东东平县城镇公益性岗位招聘30人笔试参考题库及答案详解
- 2026年江西省抚州市住房和城乡建设局人员招聘笔试备考题库及答案详解
- 2026青岛海检集团有限公司招聘考试备考题库及答案详解
- 2026四川自贡市荣县建设工程质量检测所劳务派遣人员招聘1人考试备考试题及答案详解
- 2026年黄石市下陆区住房和城乡建设局人员招聘考试备考题库及答案详解
- 绿色办公面试题及答案
- 保险AI模型透明度设计
- 浙江金柯桥城市发展集团(建设集团)有限公司及下属单位招聘8人考试参考题库及答案详解
- 医保监控平台医疗机构数据采集接口规范
- 《防治煤与瓦斯突出规定》培训课件
- 重点(关键)和难点工程施工方案、方法及措施
- 阿甘正传全部台词中英对照
- 荆防颗粒课件介绍
- 全国轻工行业职业技能竞赛计算机程序设计员S(CAD设计)赛项备赛试题库(含答案)
- 患者身份识别培训课件
- 财务共享服务业务处理(全 ) 教案
- 挂篮施工及安全控制连续梁施工安全培训课件
- 《行政强制法》课件
- 地铁施工梯笼专项施工方案
评论
0/150
提交评论