C语言数据与常量.ppt

上传人:牧羊曲112 文档编号:5426329 上传时间:2023-07-05 格式:PPT 页数:47 大小:526.50KB
返回 下载 相关 举报
C语言数据与常量.ppt_第1页
第1页 / 共47页
C语言数据与常量.ppt_第2页
第2页 / 共47页
C语言数据与常量.ppt_第3页
第3页 / 共47页
C语言数据与常量.ppt_第4页
第4页 / 共47页
C语言数据与常量.ppt_第5页
第5页 / 共47页
点击查看更多>>
资源描述

《C语言数据与常量.ppt》由会员分享,可在线阅读,更多相关《C语言数据与常量.ppt(47页珍藏版)》请在三一办公上搜索。

1、1,数据类型和运算规则,2,第三章 数据类型和运算规则,基本数据类型与特点 各种数据类型表示范围 常量的表示方法 变量说明语句 运算符与基本运算规则,本 章 要 点,3,第三章 数据类型和运算规则,第一节 数据与数据类型第二节 常量与常量定义第三节 变量与变量说明第四节 基本运算第五节 运算符的优先级与结合性第六节 数据类型转换,4,3-1 数据与数据类型,数据 程序加工处理的对象及其结果。数据类型 按数据的性质、在计算机内部的存储形式(占用的内存单元数量、编码方式、取值范围等)、构造特点来对数据进行分类。,基本概念,5,例:求三数的平均值main()int a,b,c;int ave;a=1

2、0;b=20;c=30;ave=(a+b+c)/3;printf(%d,%d,%dn,a,b,c);printf(ave=%dn,ave);,6,2-1 数据与数据类型(续),C语言的数据类型,基本类型,整型 int实型(浮点型)字符型 char,单精度 float双精度 double,指针类型,派生类型,数组结构 struct共用体 union,空类型,枚举类型,7,3-2 常量与常量定义,常量 在程序运行过程中,其值不能被改变的量称为常量。变量 在程序运行过程中,其值可以被改变的量称为变量。一个变量有一个名字,在内存中占据一定的存储单元;在该存储单元中存放变量的值。变量名是一个符号地址,在

3、对程序编译连接进由系统给每个变量名分配一个内存地址。在程序中从变量中取值,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。,一、基本概念,8,3-2 常量与常量定义-整型常量实例,整型常量的不同表示方法:10进制:100-8 0+123 8进制:010 024 0100 16进制:0 x38 0 x10 0X10 0XFF 0 xa错误:091、15a、0 x5fg,二、整型常量,常量常量:整形、实型、字符型、字符串常量、符号常量,9,3-2 常量与常量定义-实型常量实例,实型常量的不同表示方法:当整数或小数部分为0时,可以省略,但小数点不能省。10进制形式:1.0 1.+12.

4、0-12.0 0.0 指数形式:一般形式为:a E n(a为十进制数,n为十进制整数)指数:1e3 1.8e-3-123e-6 等价于:1000 1.8*10-3-123*10-6 指数:-.1e-3.1E-10 等价于:-0.1*10-3 0.1*10-10 以下为不合法浮点数:e5(阶码标志e前无数字)、-5(无阶码标志)、5.0-e3(负号位置不对)、1.5e(无阶码),三、实型常量,10,3-2 常量与常量定义-字符常量,字符型常量:用单引号括起来的单个字符 实例:A g#0 2+,;()字符定界符:单引号 字符型数据的存储格式:ASCII码(见书附录)65 103 35 48 50,

5、如何表示不可显示字符?,回车/退格/TAB?,如何表示定界符?,产生歧异,转义符:将后面的字符转换为其它含义,三、字符型常量,11,3-2 常量与常量定义-转义符常量,字符形式 功能 使用举例 0 字符串结束标志 n 换行(ASCII码为10)printf(”n”);t 横向跳格 printf(”t”);b 退格 r 回车(ASCII码为13)f 走纸换页 字符(ASCII码为92)表示字符 单引号 表示字符”双引号”表示字符”ddd 用8进制表示字符 a=141 A=101 换行符 12 xhh 用16进制表示字符 a=x61 A=x41 换行符 xa,12,3-2 常量与常量定义-字符串常

6、量,字符串常量:用双引号括起来的字符序列 实例:”This is C string.”a”(1个空格)”(不含空格)串定界符:双引号”字符串长度:字符串中包含的字符数量。,串长=17串长=1串长=1串长=0,tNameAddressn,串长=15,空串,实例:,C is very easy.,串长=17,注意:字符串a 与 字符a 的区别,He saidok.n,串长=13,13,3-2 常量与常量定义,符号常量符号常量定义形式#define 标识符 常量 用定义的一个标识符来代表一个常量,称为符号常量 例:#define PI 3.14159#宏命令专用定义符号define 命令 标识符宏替

7、换名(一般采用大写字符),注意:符号常量与变量不同,它的值在程序运行过程中不能改变,也不能重新赋值。,14,#define PI 3.14159#define R 2main()float s;s=PI*R*R;printf(“s=%fn”,s);,15,3-3 变量与变量的定义,一、变量的数据类型,基本类型,整型 int实型(浮点型)字符型 char,单精度 float双精度 double,指针类型,派生类型,数组结构 struct共用体 union,空类型,枚举类型,16,char型数的内存占用空间:二进制 8bit(1Byte),0 0 0 0 0 0 0 0,0 0 0 0 0 0 1

8、 0,1 1 1 1 1 1 1 1,=0,=20=1,=255,0 0 0 0 0 0 0 1,=21=2,0 0 0 0 0 0 1 1,=21+20=3,3-3 变量与变量的定义-字符型,17,Main()Int a=35;Printf(“the number is%c”,a);输出结果为#,18,1.分类 根据占用内存字节数的不同,整型变量又分为类:(1)基本整型(类型关键字为int)。(2)短整型(类型关键字为short int)。(3)长整型(类型关键字为long int)。(4)无符号整型。无符号型又分为无符号基本整型(unsigned int)、无符号短整型(unsigned

9、short)和无符号长整型(unsigned long)三种,只能用来存储无符号整数。,3-3 变量与变量的定义-int,19,占用内存字节数与值域下表列出ANSI标准定义的整数类型和有关数据。Turbo C的规定与之完全一致。,3-3 变量与变量的定义-int,20,int型数占用的内存空间为:二进制 16bit(2Byte),0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1,0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1,0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,=1,=3,int型整数的最大值,int型表示数的范围:-32768 327

10、67,1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1,注意:使用中要防止数据溢出,=-1,int型整数的最小值,1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0,=215-1=32767,=-215=-32768,3-3 变量与变量的定义-int,21,二进制 7位,二进制 23位,单精度实型,尾数,阶码,尾数的符号位,阶码的符号位,3-3 变量与变量的定义-实型,基本数据类型的数据存储格式和取值范围:类型 占用内存单元 取值范围 数据存储格式 float 4(32位)3.4*10-383.4*1038 6位有效数字 double 8(64位)10-308 103

11、08 15位有效数字,22,3-3 变量与变量说明,变量的说明格式:类型修饰符 类型说明符 变量列表;例如:int i;char ch,str;long k=1,m=0 x12345678;double x,y=1;变量说明意味着确定了:该变量 占用内存单元的数量,数据在内存的表示方式,数据的取值范围。,二、变量说明的基本概念,main()float s,r;scanf(“%f”,23,3-3 变量与变量说明,变量在说明之后,没有固定的初始值,要先赋值(给定一个初始值),后使用。变量赋初值 将变量说明与赋初值合一,在说明变量时同时完成。实例char cc=a,dd=n;int x=10,y=-

12、10,z;double try=28.5,w=1e10;,二、变量赋初值,24,2-4 运算符,一、运算符简介,按运算类型分类 1.算术运算符 2.关系运算符 3.逻辑运算符 4.位运算符 5.赋值与赋值组合运算符 6.自增自减运算符 7.条件运算 8.指针运算 9.其它运算符按运算对象的数目分类 单目运算 双目运算 三目运算,目:进行运算时需要的操作数的数量,25,2-4 运算符-算术运算,一、算术运算符,运算符(双目运算符/单目运算符)+加法运算 12 正值运算 14-减法运算 12 负值运算 14*乘法运算 13/除法运算 13%求余运算 13 10%3=1优先级:*/%同级(高),+-

13、同级(低)例:2+3*4=2+(3*4)=14结合性:相同优先级运算符进行运算时的次序 自左向右(标记为),26,2-4 运算符-算术运算实例,1.参加运算的对象都是int型,结果截取为int型 10/311/310.0/3 11/3.01/21.0/210/5*310/(5*3),2.求余运算的对象必须是整型 9%31%310%310%-3-10%3-10%-3,=3,=3,=3.333333,=3.666667,=0,=0.5,=6,=0,=0,=1,=1,=1,=-1,=-1,注意:运算对象的数据类型对运算结果的影响,a+b如何表示数学表达式-c+d,(a+b)/(c+d),27,2-4

14、 运算符-关系运算,二、关系运算符,运算符(双目运算符)大于 10=大于等于 10 小于 10=小于等于 10=等于 9!=不等于 9,优先级:=同级(高),!=同级(低)关系运算的结果应该为逻辑型“真”或“假”C语言中没有逻辑型,将逻辑型数值化处理,用整型1表示“真”,用整型0表示“假”。,28,2-4 运算符-关系运算实例,实例 关系表达式 75 的值是 1,57 的值是 0。已知:int a=13,b=2,c=1;abab)=cab=ca-b=c,成立,结果为 1不成立,结果为 0成立,结果为 1不成立,结果为 0结果为 1与上面等价,结果为 1等价于(a-b)=1,结果为 0,?,如何

15、判断数学中的逻辑关系:0a9?0=a=9,等价于(0=a)=9,结果恒为1,29,2-4 运算符-逻辑运算,三、逻辑运算符,运算符&逻辑与(双目)5()逻辑或(双目)4()!逻辑非(单目)14(),逻辑运算真值表,逻辑运算关系,30,2-4 运算符-逻辑运算,式2(y b)&(y a),1 结果,2 结果,例:要判断 0 x 9 是否成立:(0=x)&(x=9)如果没有括号:0=x&x=9 等价,结果 结果,实例:比较下列两个逻辑表达式的执行过程 式1 y b&y a,31,2-4 运算符-位运算,四、位运算符,运算符 按位右移(双目)11()按位左移(双目)11()&按位与(双目)8()按位

16、异或(双目)7()按位或(双目)6()按位反(单目)14(),真值表,a b ab a b0 0 0 1 10 1 1 1 01 0 1 0 11 1 0 0 0,32,实例:已知:int x=7,y=10,z=1;设字长为8位 x&y=x&z=x y=y z=x y=x=x=x2=x2=,2(0000 0111&0000 1010=0010)1(0000 0111&0000 0001=0001)15(0000 0111 0000 1010=1111)11(0000 1010 0000 0001=1011)13(0000 0111 0000 1010=1101)8(0000 0111)=111

17、1 1000 7 28(0000 0111 2=0000 0010)1(0000 0111 2=0000 0001),2-4 运算符-位运算,33,说明 关于:右移一位=缩小 1/2 关于:左移一位=扩大 2 倍 关于:因为:x=按位求反=求反运算 求负=求补=求反+1 所以:求反=求负 1 x=-x-1 7=8(8)=7注意:1.位运算是对二进制的位进行运算 2.只能对int型、char型和long型进行位运算,2-4 运算符-位运算,34,2-4 运算符-自增自减运算,五、自增自减运算符,运算符(单目)+自增 14 自减 14+和 为单目运算,只能作用于变量只能对int、char、long

18、和指针变量进行运算功能:+x x=x+1 x x=x1(前缀)x+x=x+1 x x=x1(后缀),35,2-4 运算符-自增自减运算,自增(自减)有前缀和后缀之分。前缀形式:先自增(自减)再引用 后缀形式:先引用再自增(自减)前缀与后缀的区别:y=+x;x=x+1;y=x;x先加1再赋值 y=x+;y=x;x=x+1;x先赋值再加1,36,2-4 运算符-自增自减运算实例,实例(1)+i;i+;因为在表达式中没有其它运算,结果一样。(2)x=1;y=+x;结果:x=2,y=2 y=+x;x=x+1;y=x;在做赋值运算之前,x先加1,然后将x赋给y(3)x=1;y=x+;结果:x=2,y=1

19、 y=x+;y=x;x=x+1;先将 x 赋值给 y,然后 x 再加1,37,2-4 运算符-自增自减运算实例,实例(4)main()int i=8;printf(%dn,+i);printf(%dn,-i);printf(%dn,i+);printf(%dn,i-);,38,2-4 运算符-赋值与赋值组合运算,六、赋值与复合赋值运算符,运算符(双目 自右向左结合)赋值运算:=(不是等号)2 例:a=b+c a=b=c=2+3凡是表达式可以出现的地方都可以出现赋值号 例:x=(a=1)+(b=2)赋值表达式加上;即为赋值语句 注意变量赋值语句与变量说明语句的区别 变量说明语句中赋初值的变量与其

20、它变量之间用逗号分隔,而赋值语句必须以分号结尾。例:int a=2,b=3,c;a=2;b=5;在变量说明中,不允许给多个连续的变量赋初值 例:int a=b=c=4;,把变量b和变量c的值取出来相加后送到变量a中,a=(b=(c=(2+3),39,2-4 运算符-赋值与赋值组合运算,六、赋值与复合赋值运算符,运算符(双目)复合赋值运算:e1 op=e2 2 等于:e1=e1 op(e2)其中:op为下列10个运算符之一+*/%|,40,2-4 运算符-条件运算,七、条件运算符,运算符(三目)e1?e2:e3功能:如果表达式e1成立(e1值为非0),则执行表达式e2;否则(表达式e1不成立),

21、执行表达式e3,例:max=(ab)?a:b;求变量a与b的最大值 min=(ab)?a:b;求变量a与b的最小值,41,2-4 运算符-指针运算,八、指针运算符,运算符(单目)&取变量的地址 14*取指针变量(所指向)的内容 14注意:运算符&和“位与”运算是同一符号;运算符*和“乘”运算是同一符号。只能从程序的上下文来区分运算符&和运算符*的实际意义。,42,2-4 运算符-其它运算,九、其它运算符,运算符.取结构/联合的成员 15 通过指针取结构/联合的成员 15()改变表达式中的优先级关系 15 数组下标 15,逗号,表达式从左向右顺序计算 1(type)e 将e的数据类型强制转换为t

22、ype 14 sizeof(opr)求opr所占用的内存的字节数 14,结构,数组,43,2-4 运算符-其它运算实例,实例:已知:int x,y,z;y=(x=10,x+1);答案:先执行x=10,然后再执行y=x+1 y=11,x=10,44,2-5 运算符的优先级与结合性,按运算符的优先级分为15级按运算符的结合性分为2种自左向右结合 自右向左结合优先级不同时:运算符优先级的高低决定了进行运算的先后次序。优先级相同时:同优先级运算符的运算次序由结合性决定。例如:四则运算中的“先乘除,后加减”反映了运算符的优先级;“同级运算从左至右”反映了乘/除(加/减运算)的结合性。,45,2-5 运算

23、符的优先级与结合性,运算符优先级表,46,2-6 数据类型转换,不同数据类型的数据/变量进行混合运算时,需要进行数据类型转换转换方式有两种:“显式的”类型转换“隐式的”类型转换“显式的”类型转换采用强制类型转换运算符(type)如:float a;(int)a+15;“隐式的”类型转换是语言按照一定的类型转换规则自动进行的转换,47,2-6 数据类型转换,“隐式的”类型转换规则 1、运算中将所有char型数据都转换成int型,float型转换成double型。2、低级类型服从高级类型,并进行相应的转换double floatlongunsignedint char,3、赋值运算以赋值运算符左边变量的类型为准,即赋值运算符右端值的类型向左边变量的类型看齐,并进行相应的转换。,

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

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号