版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二章数据与运算预备知识整形、实型与字符型数据常量、变量与标识符运算符和表达式整形数据与实型数据的内存形式数据类型数据类型总表<>数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作语言程序设计第二章数据描述CC数据类型基本类型构造类型指针类型空类型void定义类型typedef字符类型char整型实型单精度型float双精度型double短整型short长整型long整型int数组结构体struct共用体union文件类型(FILE)预备知识计算机中数的表示及进制转换数码、基与权数码:表示数的符号基:数码的个数权:每一位所具有的值数制<>语言程序设计第二章数据描述C数制基权表示数码特点10º,10¹,10²,…十进制数0~910逢十进一二进制数0~122º,2¹,2²,…逢二进一八进制数0~788º,8¹,8²,…逢八进一十六进制数0~9,A~F,a~f1616º,16¹,16²,…逢十六进一十进制:4956=410³+910²+510¹+610º二进制:1011=12³+02²+12¹+12º十六进制:81AE=816³+116²+1016¹+1416º八进制:4275=48³+28²+78¹+58º语言程序设计第二章数据描述C各种进制之间的转换二进制、八进制、十六进制转换成十进制方法:按权展开<>语言程序设计第二章数据描述C十进制转换成二进制、八进制、十六进制方法:连续除以基,从低到高记录余数,直至商为0二进制、八进制、十六进制的转换方法:二变八合三位为一位
二变十六合四位为一位整型常量实型常量字符常量字符串常量常量定义:程序运行时其值不能改变的量(即常数)3.14语言程序设计第二章数据描述C整型常量(整常数)三种形式:十进制整数:由数字0~9和正负号表示.如123,-456,0八进制整数:由数字0开头,后跟数字0~7表示.如0123,011十六进制整数:由0x开头,后跟0~9,a~f,A~F表示.如0x123,0Xff问题:0123=()100x123=()100Xff=()1083291255问题:0123=()100x123=()100Xff=()10语言程序设计第二章数据描述C实型常量(实数或浮点数)表示形式:十进制数形式:(必须有小数点)如0.123,.123,123.0,0.0,123.指数形式:(e或E之前必须有数字;指数必须为整数)如12.3e3,123E2,1.23e4,e-5,1.2E-3.5
语言程序设计第二章数据描述C规范化的指数形式规范化的指数形式:在字母e(或E)之前的尾数部分中,小数点左边应有一位(且只能有一位)非零的数字字符常量定义:用单引号括起来的单个普通字符或转义字符.
字符常量的值:该字符的ASCII码值<转义字符及其含义:转义字符含义\n\v\r\a\‘\ddd\t\b\f\\\“\xhh转义字符含义换行垂直制表回车响铃单引号3位8进制数代表的字符水平制表退格换页反斜线双引号2位16进制数代表的字符如‘\101’-----------‘A’‘\012’-----------’\n’‘\376’-----------’’‘\x61’-----------’a’‘\60’-----------’0’‘\483’----------(
)例:‘A’-------’\101’-------’\x41’--------65如‘a’‘A’‘?’‘\n’‘\101’转义字符:反斜线后面跟一个字符或一个代码值表示,意思是将反斜杠(\)后面的字符转换成另外的意义。例转义字符举例main(){printf("\101\x42C\n");
printf("Isay:\"Howareyou?\"\n");
printf("\\CProgram\\\n");
printf("Turbo\'C\'");}运行结果:(屏幕显示)ABCIsay:”Howareyou?”\CProgram\Turbo‘C’例main(){printf(“Y\b=\n”);}运行结果:屏幕显示:=如‘A’——65,‘a’——97,‘0’——48,‘\n’——10有关转义字符的几点说明:(1)转义字符常量,如‘\n’、‘\101’、‘\141’只代表一个字符。(2)反斜线后的八进制数不用0开头。如:‘\101’代表的就是字符常量‘A’,‘\141’代表字符常量‘a’。
(3)反斜线后的十六进制数只可由小写字母x开头,不允许用大写字母X,也不能用0x开头。如:‘\x41’代表字符常量‘A’,‘\x6d’(也可写成‘\x6D’)代表字符常量‘m’。
语言程序设计第二章数据描述C例:charch;
ch=“A”;字符常量与字符串常量不同字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个‘\0’作为字符串结束标志hello\0例字符串“hello”在内存中aa\0例‘a’“a”例空串“”\0例:charch;
ch=‘A’;语言程序设计第二章数据描述C标识符、符号常量与变量标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字符必须是字母或下划线大小写敏感不能使用关键字
长度:最长32个字符命名原则:见名知意不宜混淆如1与I,o与0例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3chara>b_above$123<>M.D.John3days#33char$123a>b语言程序设计第二章数据描述C变量概念:在程序运行过程中,其值可以改变的量变量名与变量值变量定义的一般格式:
数据类型变量1[,变量2,…,变量n];<>变量初始化:定义时赋初值例:
inta,b,c;floatdata;a=1;data=1.23;决定分配字节数和数的表示范围合法标识符例:
inta=2,b,c=4;floatdata=3.67;charch=‘A’;
intx=1,y=1,z=1;
intx=y=z=1;变量的使用:先定义,后使用例1
intstudent;
stadent=19;//Undefinedsymbol‘statent’infunctionmain
例2floata,b,c;c=a%b;//Illegaluseoffloatingpointinfunctionmain
变量定义位置:一般放在函数开头main(){inta,b=2;floatdata;a=1;data=(a+b)*1.2;
printf(“data=%f\n”,data);}变量定义可执行语句main(){inta,b=2;a=1;floatdata;data=(a+b)*1.2;
printf(“data=%f\n”,data);}语言程序设计第二章数据描述C整型变量占字节数随机器不同而不同,一般占一个机器字short≤int≤long有符号,无符号整型实型变量float:占4字节,提供7~8位有效数字double:占8字节,提供15~16位有效数字字符型变量字符变量存放字符ASCII码char与int数据间可进行算术运算例floata;a=111111.111;/*a=111111.1*/doubleb;b=111111.111;/*b=111111.111*/例a=‘D’;/*a=68;*/x=‘A’+5;/*x=65+5;*/s=‘!’+‘G’/*s=33+71;*/<>没有字符串变量,用字符数组存放语言程序设计第二章数据描述C在实际应用中,变量的值常常是正的(如学号、库存量、年龄、存款额等)。为了充分利用变量的表数范围,此时可以将变量定义为“无符号”类型。例如:有符号基本整型[signed]int
无符号基本整型unsigned[int]整型数据在内存中的存放形式:数据在内存中是以二进制形式存放的。计算机中,内存储器的最小存储单位称为“位(bit)”,每一个位中或者存放0,或者存放1,因此称为二进制位。在C语言中,一个int整数通常用两个字节存放:其中最高位(最左边的一位)用来存放整数的符号,若是正整数,最高位放置0,若是负整数,最高位放置1。因此,从最高位就可以判别出存放的整数是正整数还是负整数。实际上,一个有符号整数在内存中,是以补码(complement)形式存放的。语言程序设计第二章数据描述C>>>地址52字节2字节2字节地址地址内存0000000000000101…...(一)正整数:
整数5在内存中存放的形式为:
0000000000000101(最高位为符号位,为0表示数值为正)。语言程序设计第二章数据描述C…...地址-52字节2字节2字节地址地址1111101111111111(二)负整数:
负整数在内存中存放的形式为:
1111111111111011(最高位为符号位,为1表示数值为负)。<(一)实型数据在内存中的存放形式:在常用的微机系统中,一个实型数据在内存中占4个字节(32位)。实型数据按照指数形式存储的。系统把一个实型数据分成尾数部分和指数部分,分别存放。尾数部分占的位(bit)数愈多,数的有效数字愈多,精度愈高。指数部分占的位数愈多,则能表示的数值范围愈大。(二)实型数据的舍入误差:
由于实型变量是由有限的存储单元组成的,因此能提供的有效数字总是有限的,在有效位以外的数字将被舍去。由此可能会产生一些误差。main(){floata,b;a=123456.789e5;b=a+20;
printf("%f",b);}
在内存中,字符数据的存储形式与整数的存储形式类似。使得字符数据与整型数据可以互相赋值。main(){charc1,c2;
inti,j;c1=97;c2=98;/*字符变量接受整型数据*/i='A';j='B';/*整型变量接受字符数据*/
printf(“%c%c\n”,c1,c2);
printf(“%d%d\n”,c1,c2);
printf("%c%c\n",i,j);
printf("%d%d\n",i,j);
}程序的运行结果是:
ab
97
98AB6566
基本数据类型<>类型符号关键字数的表示范围所占位数整型字符型实型有无(signed)int16-2147483648~2147483647(signed)short16-32768~32767(signed)long32-2147483648~214748364716unsigned
int0~4294967295320~4294967295unsigned
longunsigned
short160~65535有float32-3.4e38~3.4e38有double64-1.7e308~1.7e308有char8-128~127无unsignedchar80~255说明:数据类型所占字节数随机器硬件不同而不同,上表以IBMPC机为例:语言程序设计第二章数据描述Cmain()/*不同种类的数据进行算术运算*/{shortinti;longintj,m;i=32767;j=32768;m=i*j;
printf("m=%ld\n",m);/*%ld为长整型变量输出格式*/}程序的运行结果是:m=1073709056
main()/*整型数据的溢出*/{shortinti,j;i=32767;j=i+1;
printf("i=%d,j=%d\n",i,j);}程序的运行结果是:i=32767,j=-32768
32767+1将超出int的表示范围语言程序设计第二章数据描述Cmain(){intr;floatl,s;r=10;l=2*3.14*r;s=3.14*r*r;
printf(“l=%f,s=%f”,l,f);}#definePI3.14main(){intr;floatl,s;r=10;l=2*PI*r;s=PI*r*r;
printf(“l=%f,s=%f”,l,f);}符号常量#define符号常量名数或字符使用符号常量的好处是:含义清楚。在需要改变一个常量时能做到“一改全改”。不同类型数据间的转换隐式转换什么情况下发生运算转换------不同类型数据混合运算时赋值转换------把一个值赋给与其类型不同的变量时输出转换------输出时转换成指定的输出格式函数调用转换------实参与形参类型不一致时转换运算转换规则:不同类型数据运算时先自动转换成同一类型<>语言程序设计第二章数据描述Cdoublefloatlongunsignedintchar,short低高说明:必定的转换运算对象类型不同时转换例charch;
inti;floatf;doubled;ch/i+f*d-(f+i)intintdoubledoubledoubledoubledoubledoubleintintdoubledoubledoubledoubledoubledouble10+‘a’+i*f-d/l例inti;floatf;doubled;longl;<>显式转换(强制转换)一般形式:(类型名)(表达式)例
(int)(x+y)(int)x+y(double)(3/2)(int)3.6说明:强制转换得到所需类型的中间变量,原变量类型不变例main(){floatx;
inti;x=3.6;i=(int)x;
printf(“x=%f,i=%d”,x,i);}结果:x=3.600000,i=3精度损失问题较高类型向较低类型转换时可能发生<>语言程序设计第二章数据描述C
运算符和表达式C运算符算术运算符:(+-*/%++--)关系运算符:(<<===>>=!=)逻辑运算符:(!&&||)位运算符:(<<>>~|^&)赋值运算符:(=及其扩展)条件运算符:(?:)逗号运算符:(,)指针运算符:(*&)求字节数:(sizeof)强制类型转换:(类型)分量运算符:(.->)下标运算符:([])其它:(()-)<>语言程序设计第二章数据描述C学习运算符应注意:运算符的功能
与运算量关系要求运算量个数一元运算符(或单目运算符)
二元运算符(或双目运算符)
三元运算符(或三目运算符)exp1?exp2:exp3要求运算量类型运算符优先级别(附录3)结合方向(附录3)计算表达式的值时先看优先级再看结合性结果的类型<>语言程序设计第二章数据描述C算术运算符和表达式基本算术运算符:+-*/%结合方向:从左向右优先级:----->*/%----->+-(2)(3)(4)
说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据例5/2=-5/2.0=例5%2=-5%2=1%10=
5%1=5.5%2<>例5/2=2
-5/2.0=-2.5例5%2=1
-5%2=-11%10=
1
5%1=
05.5%2
()语言程序设计第二章数据描述C赋值运算符和表达式简单赋值运算符符号:=格式:变量标识符=表达式作用:将一个数据(常量或表达式)赋给一个变量复合赋值运算符种类:+=-=*=/=%=《=》=&=^=|=含义:exp1op=exp2
exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3<>例a=3;语言程序设计第二章数据描述C说明:结合方向:自右向左优先级:14左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例3=x-2*y;()
a+b=3;()例
floatf;
inti;i=10;f=i;则
f=10.0例inti;i=2.56;//结果i=2;例:a=b=c=5a=(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语言程序设计第二章数据描述C说明:结合方向:自右向左优先级:14左侧必须是变量,不能是常量或表达式赋值表达式的值与变量值相等,且可嵌套赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型例:a=12;a+=a-=a*a<>//a=-264等价于a=a+(a=a-(a*a))语言程序设计第二章数据描述C关系运算符和表达式关系运算符种类:<<===>=>!=结合方向:自左向右优先级别:<<=>>===!=优先级6(高)优先级7(低)例c>a+b//c>(a+b)a>b!=c//(a>b)!=ca==b<c//a==(b<c)a=b>c//a=(b>c)关系表达式的值:是逻辑值“真”或“假”,用1和0表示例inta=3,b=2,c=1,d,f;a>b(a>b)==cb+c<ad=a>b<>//表达式值1//表达式值1//表达式值0//d=1语言程序设计第二章数据描述Cab!a!ba&&ba||b真假真假假假真真逻辑运算符和表达式逻辑运算符种类:!&&||逻辑运算真值表C语言中,运算量:0表示“假”,非0表示“真”,
运算结果:0表示“假”,1表示“真”,<>真假假假假假真真假假真真真假真真语言程序设计第二章数据描述C逗号运算符和表达式形式:表达式1,表达式2,……表达式n结合性:从左向右优先级:15(优先级最低)逗号表达式的值:等于表达式n的值例a=3*5,a*4a=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//赋值表达式,表达式值18,x=18//逗号表达式,表达式值18,x=3//1,2,3//3,2,3语言程序设计第二章数据描述C逗号运算符和表达式形式:表达式1,表达式2,……表达式n结合性:从左向右优先级:15逗号表达式的值:等于表达式n的值例:#include<stdio.h>main(){intx,y=7;floatz=4;x=(y=y+6,y/z);
printf("x=%d\n",x);}运行结果:x=3<>语言程序设计第二章数据描述C条件运算符与表达式一般形式:expr1?expr2:expr3执行过程功能:相当于一个具有判断能力的条件语句例if(a>b)
printf(“%d”,a);else
printf(“%d”,b);printf(“%d”,a>b?a:b);例求a+|b|
printf(“a+|b|=%d\n”,b>0?a+b:a-b);expr1取expr2值取expr3值非0=0例(a==b)?’Y’:’N’(x%2==1)?1:0(x>=0)?x:-x(c>=‘a’&&c<=‘z’)?c-’a’+’A’:c条件运算符可嵌套
如x>0?1:(x<0?-1:0)优先级:13结合方向:自右向左
如a>b?a:c>d?c:da>b?a:(c>d?c:d)expr1、expr2、expr3类型可不同,表达式值取较高的类型<>例x?‘a’:‘b’//x=0,表达式值为‘b’;x‡0,表达式值为‘a’x>y?1:1.5//x>y,值为1.0;x<=y,值为1.5语言程序设计第二章数据描述C自增、自减运算符++--作用:使变量值加1或减1种类:前置++i,--i(先执行i=i+1或i=i-1,再使用i值)后置i++,i--(先使用i值,再执行i=i+1或i=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
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度股东清算协议书及清算组责任保险合同
- 2025年度商业街租赁权转让与商业运营合同
- 2025版南宁市中心商务区写字楼租赁合同及商务配套服务协议4篇
- 二零二五年度瑜伽馆租赁合同最长期限及瑜伽课程安排
- 2025年度住宅小区地下车库车位转让合同
- 二零二五年度装卸工安全责任与责任保险合同
- 2025年度高端餐厅定制化供餐服务合同
- 二零二五年度足疗店员工服务质量监控与提升合同
- 二零二五年度画室老师艺术教育版权授权合同
- 视频录制合同协议书
- GB/T 16895.3-2024低压电气装置第5-54部分:电气设备的选择和安装接地配置和保护导体
- 安徽省合肥市2025年高三第一次教学质量检测地理试题(含答案)
- 计划合同部部长述职报告范文
- 风光储储能项目PCS舱、电池舱吊装方案
- 人教版高一地理必修一期末试卷
- GJB9001C质量管理体系要求-培训专题培训课件
- 二手车车主寄售协议书范文范本
- 窗帘采购投标方案(技术方案)
- 基于学习任务群的小学语文单元整体教学设计策略的探究
- 高中英语原版小说整书阅读指导《奇迹男孩》(wonder)-Part one 讲义
- GB/T 9755-2001合成树脂乳液外墙涂料
评论
0/150
提交评论