版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1
中南大学信息科学与工程学院目录3种基本数据结构C语言的数据类型简介中南大学信息科学与工程学院3.1C的数据类型通俗的说,一个程序应包括两个方面的内容:1.操作对象的描述,即数据的描述2.操作步骤的描述,即动作的描述因此著名计算机科学家N.Wirth教授提出了一个公式:程序=算法+数据结构实际上,一个程序除了上述两个主要因素以外,还应当采用结构化程序设计方法进行程序设计,并且用某一种计算机语言表示,即:程序=算法+数据结构+程序设计方法+语言工具和环境标识符用于标识变量名、符号常量名、函数名、类型名、数组名、文件名。
注意:只能由字母、数字和下划线组成,且第一个字符必须是字母或下划线!标识符的分类(1)关键字(保留字)(2)预定义标识符(3)用户标识符3.1C的数据类型auto,for,longb表3-1printf,includeName,
myfunction大小写字母是不同的字符合法的标识符:如sum,average,_total,Class,day,BASIC,li_ling不合法的标识符:M.D.John,¥123,#33,3D64,a>bC语言提供的数据结构是以数据类型的形式出现的,C的数据类型有:
整型字符型单精度型基本类型实型(浮点型)枚举类型双精度型
结构体类型构造类型数组类型数据类型共用体类型指针类型
空类型3.1C的数据类型数据类型的基本属性:数据的示数类型;占用内存大小和在内存中表示方式(关键)。3.2常量与变量一、常量 常量是指在程序的运行过程中不能被改变的量。常量一般从其字面形式即可判别,也可用一个标识符代表一个常量。
[例3.1]#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}符号常量直接常量二、变量变量是指在程序的运行过程中可以被改变的量。一个变量应该有一个名字(标识符),在内存中占据一定的存储单元,在该存储单元中存放变量的值。C语言规定:标识符只能由字母、数字和下划线三种字符构成,且第一个字符只能是字母或下划线。C语言中,区分大写字母和小写字母。如:a与A不同。C语言中,要求对所有用到的变量作强制定义,即:“先定义,后使用”。(这样做有三个目的)。3.2常量与变量(1)保证变量名正确使用;(2)便于编译时分配相应的存储单元;(3)便于编译时检查有变量参加的运算是否合法。类型标识符变量名1,[,变量名2,变量名3,…];3.3C语言三种基本数据类型——整型数据一、整型常量的三种形式: 1.十进制整数:如123、-456、0 2.八进制整数:以0开头,如:0123 3.十六进制整数:以0x开头,如:0x123二、整型变量 1、基本型,以int表示。
2、短整型,以shortint
表示,或以short
表示。 3、长整型,以longint
表示,或以long
表示。 4、无符号型,其中无符号型又分为无符号整型,无符号短整型和无符号长整型,分别以unsignedint,unsignedshort和unsignedlong表示C语言标准没有具体规定以上各类数据所占内存字节数,各种机器处理上有所不同,一般以一个机器字存放一个int型数据,而long型数据的字节数应不小于int型,short型不大于int型。3.3C语言三种基本数据类型——整型数据二、整型变量
C规定在程序中所有用到的变量都必须在程序中指定其类型,即“定义”。例如:
inta,b;unsignedshortc,d;longe,f;[例3.2]main(){
inta,b,c,d;unsignedu; a=12;b=-24;u=10; c=a+u; d=b+u; printf("a+u=%d,b+u=%d\n",c,d);}
※对变量的定义,一般是放在一个函数的开头部分。3.3C语言三种基本数据类型——整型数据屏幕输出:a+u=22,b+u=-143.3C语言三种基本数据类型——整型数据TurboC支持的整型数据关键字所占位数取值范围short16-32768-32767unsignedshort160-65535int16-32768-32767unsigned160-65535long32-2147483648-2147483647unsignedlong320-4294967295三、整型常量的类型-在将一个整型常量赋给一个整型变量时如何进行类型匹配?一个整型常量,根据其所在范围,它可以赋值给相应类型。如果某一计算机系统的C版本确定的shortint与int型数据在内存中占据的长度相同,则它的表示范围与int型相同。因此一个int型的常量也同时是一个shortint型常量,可以赋值给int型或shortint型变量。常量中无unsigned型,但一个非负值的整常量可以赋值给unsigned型整常量,只要它的范围不超过变量的表示范围即可。在一个整常量后面加一个字母l或L,则认为是longint型常量.例如:
1231,432L,0L等等。这往往用于函数调用中,如果函数的形参为longint型,则要求实参也为longint型,此时用123作实参不行,而要用123L作实参。3.3C语言三种基本数据类型——整型数据一、实型常量的两种形式十进制数形式:由数字和小数点组成(注意必须有小数点)指数形式:如123e3或123E3。注意字母e(或E)之前必须有数字,且后面必须为整数。3.3C语言三种基本数据类型——实型数据3.3C语言三种基本数据类型——实型数据数值以规范化的二进制数指数形式存放以3.14159为例3.14159*1000.314159*1010.0314159*102.314159+1数符小数部分指数二、实型变量的分类单精度(float)型:如floatx,y;双精度(double)型:如doublez;实型常量不分float型和double型。一个实型常量可以赋给一个float型或double型变量。根据变量的类型截取实型常量中相应的有效位数字。3.3C语言三种基本数据类型——实型数据关键字字节数取值范围(绝对值)有效数字float40以及1.2*10-38~3.4*
10386double80以及2.3*10-308~1.7*
1030815longdouble160以及3.4*10-4932~1.1*10493219字符与字符代码大多数系统采用ASCII字符集字母:A~Z,a~z数字:0~9专门符号:29个:!”#&‘()*等空格符:空格、水平制表符、换行等不能显示的字符:空(null)字符(以‘\0’表示)、警告(以‘\a’表示)、退格(以‘\b’表示)、回车(以‘\r’表示)等3.3C语言三种基本数据类型——
字符型数据一、字符常量
字符常量是用单引号括起来的一个字符。以一个‘\’开始的字符序列,又称为“转义字符”。见下表。
\n 回车换行\t 横向跳格(即跳到下一个输出区)\v 竖向跳格\b 退格\r 回车不换行\f 走纸换页\\ 反斜杠字符"\"\‘ 单引号字符\ddd 1到3位8进制数所代表的字符\xhh 1到2位16进制数所代表的字符例:‘\101’代表字符“A”.因(101)8=65,ASCII码为65的字符是“A”.3.3C语言三种基本数据类型——
字符型数据二、字符变量 字符变量用来存放字符常量 注意一个字符变量只能存放一个字符。一般以一个字节来存放一个字符,或者说一个字符变量在内存中占一个字节。将一个字符常量放到一个字符变量中,实际上并不是把该字符放到到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中。3.3C语言三种基本数据类型——
字符型数据C语言使字符型数据和整型数据可以通用,如输入、输出、运算等。[例3.4]main(){charc1,c2;c1=97;c2=98;printf("%c%c",c1,c2);}[例3.5]main(){charc1,c2;c1='a';c2='b';c1=c1-32;c2=c2-32;printf("%c%c",c1,c2);}屏幕输出:ab屏幕输出:AB3.3C语言三种基本数据类型——
字符型数据字符’1’和整数1是不同的概念:字符’1’只是代表一个形状为’1’的符号,在需要时按原样输出,在内存中以ASCII码形式存储,占1个字节整数1是以整数存储方式(二进制补码方式)存储的,占2个或4个字节0011000100000000000000013.3C语言三种基本数据类型——
字符型数据charc=’?’;系统把“?”的ASCII代码63赋给变量cprintf(”%d%c\n”,c,c);输出结果是:63?字符串常量1.什么叫字符串常量?是一对双引号括起来的字符序列。2.字符串常量与字符常量有什么区别?字符常量是用单引号括起来的一个字符。3.’A’与”A”有什么区别?C语言规定:字符串常量以字符串结束标志’\0’结束。4.C语言中没有专门的字符串变量。字符串如果要存放在变量中,需要用字符数组表示,详见第六章。3.3C语言三种基本数据类型——
字符型数据一、C运算符有哪几种1.算术运算符(+-*/%)2.关系运算符(><,==>=<=!=)3.逻辑运算符(!&&||)4.位运算符(<<>>~|^&)5.赋值运算符(=及其扩展赋值运算符)6.条件运算符(?:)7.逗号运算符(,)8.指针运算符(*&)9.求字节数运算符(sizeof)10.强制类型转换运算符(类型)11.分量运算符(.->)12.下标运算符([])13.其它(如函数调用运算符())3.4基本运算符和表达式运算符的关键属性定义——包括含义和书写规范;操作对象数目——单目、双目、三目;结合性——自左向右、自右向左;优先级——决定运算次序;特殊属性或特点。3.4基本运算符和表达式基本算术运算符的运算对象、运算规则与结合性对象数名称运算符运算规则结合性单目正+取正值自右向左负﹣取负值双目加+加法自左向右减﹣减法乘*乘法除/除法模%整除取余3.4.2算术运算符和算术表达式3.4.2算术运算符和算术表达式基本算术运算说明:两个整数相除结果为整数,舍弃小数部分;求余运算符两侧只能是整数;如果参加运算的两个数中有一个数为实型,则结果为double型5/3结果为132.4%3,编译出错算术表达式
用算术运算符和括号将运算对象连接起来的,符合C语法规则的式子,称为C算术表达式。运算符的优先级与结合性优先级与普通算数计算优先级次序相同;算术运算符为左结合性;
类型不同,先自动进行转换。252023/1/12
中南大学信息科学与工程学院3.4.2算术运算符和算术表达式整型、实型、字符型数据间可以混合运算。在进行运算时,不同类型的数据要先转换成同一类型,然后进行运算。转换规则如下图所示。doublefloatlongunsignedintchar,short高低图中:横向箭头表示必定的转换,纵向箭头表示运算对象为不同类型时转换的方向。例3.6:
10+’a’+2*3.3-1234567.89/2.0=10+’a’+6.6-617283.945=10+97+6.6-617283.945=107.0+6.6-617283.945=113.60000000-617283.945=-617170.345charintintdouble3.4.2算术运算符和算术表达式27简单赋值运算符符号:=作用:将一个数据(常量或表达式)赋给一个变量
复合赋值运算符种类:+=-=*=/=%=含义:exp1op=exp2
exp1=exp1opexp2a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;3.4.3赋值运算符和赋值表达式例:a=12;a+=a-=a*a例:inta=2;a%=4-1;a+=a*=a-=a*=3;//a=-264等价于a=a+(a=a-(a*a))//a=0等价于a=a+(a=a*(a=a-(a=a*3)))赋值表达式
用赋值运算符将变量和表达式连接起来的式子。
<变量>赋值运算符<表达式>说明:赋值运算符的优先级比算数运算符低,仅高于逗号运算符;结合性:自右向左求值规则:先计算“=”右边表达式的值,赋给左边的变量281/12/20233.4.3赋值运算符和赋值表达式左侧必须是变量,不能是常量或表达式赋值转换规则:使赋值号右边表达式值自动转换成其左边变量的类型赋值表达式的值与变量值相等,且可嵌套292023/1/12
中南大学信息科学与工程学院例3=x-2*y;a+b=3;例
floatf;inti;i=10;f=i;则
f=10.0例:a=b=c=5a=(b=5)a=5+(c=6)a=(b=4)+(c=6)a=(b=10)/(c=2)例inti;i=2.56;//结果i=2;//表达式值为5,a,b,c值为5//表达式值为5,b=5;a=5//表达式值11,c=6,a=11//表达式值10,a=10,b=4,c=6//表达式值5,a=5,b=10,c=23.4.3赋值运算符和赋值表达式如果赋值运算两侧的类型不一致,但都是数值型或字符型时,在赋值时要进行类型转换。一般原则:浮点数->整数,舍弃小数部分;整数->浮点数,数值不变,但以浮点数形式存储到变量中;字符型->整数:若所用系统将字符处理为无符号的量或对unsignedchar型变量赋值,将字符的8位放到整型变量的低8位,高8位补0;若所用系统将字符处理为带符号的量,若字符最高位为1,则整型高8位补1,若字符最高位为0,则整型高8位补0;3.4.3赋值运算符和赋值表达式intf=23.43;f的值为23floatf=43;先将43转换成43.00000,再赋给fint,short,long,unsigned->char,截取低8位赋给字符型变量;int->unsignedint时,内存情况不变,但若是负数,其符号位也作为数值非给unsigned型变量。带符号的整型数据->longint型时,进行符号扩展,如果int型为正,则longint高16位为0,如果int型为负,则longint高16位为1,将整型数据的16位送到则longint低16位;longint型->int型时,高16位截断;unsignedint->longint型时,只需高位补0;非unsigned->长度相同的unsigned型变量,也时原样照赋3.4.3赋值运算符和赋值表达式自增自减运算符都是单目运算符,用来对整型、字符型、指针型以及数组元素等变量进行算术运算,其运算结果与原来的类型相同,并存回原来的运算对象。例如:(1)++m:先使m的值加1,再使用变量m。(2)m++:先使用m的值,再使变量m加1。(3)--m:先使m的值减1,再使用变量m。(4)m--:先使用m的值,再使变量m减1。3.4.3赋值运算符和赋值表达式3.4.3赋值运算符和赋值表达式自增、自减运算符
i++,i--使用i之后,使i的值加减1++i,--i使用i之前,使i的值加减1intk,i=0;k=(i++)+(i++)+(i++);输出:k=0,i=3
intk,i=0;k=(++i)+(++i)+(++i),i=3;输出:k=9,i=3注意:使用自增、自减运算符很容易出错k=i+i+i;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;i=i+1;k=i+i+i;在理解和使用上容易出错的是:m++和m--。特别是当它们出现在较复杂的表达式或语句中时,常常难于弄清,所以在开始学习时一定应仔细分析。
例如:intm=4:++m+1:在计算时,先计算m=m+1=5后,再使用m的值5和1进行相加;结果为6。m--+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 华峰重庆氨纶2021普工入职考核笔试题及清晰答案
- 内部资料2025年抖音客服考核试题及答案可下载
- 2025-2026学年手机手帐教学设计模板
- 2025-2026学年桂花雨将军晶教学设计
- 2024年电工电子维修工技能考核专属题库及答案
- 2.2 用样本估计总体教学设计高中数学人教A版必修3-人教A版2007
- 2024-2025学年高中地理 第五章 交通运输布局及其影响 第2节 交通运输方式和布局变化的影响教学设计 新人教版必修2
- 2024-2025学年八年级历史下册 第5课 三大改造教学设计 新人教版
- 2025-2030中央空调系统节能改造项目经济效益测算及推广实施细则
- 2025-2030中国智慧停车系统城市试点效果与商业模式验证报告
- 2026浙江温州市公安局招聘警务辅助人员42人笔试参考题库及答案解析
- 2026广东茂名市公安局招聘警务辅助人员67人考试参考题库及答案解析
- 2026年希望杯IHC全国赛二年级数学竞赛试卷(S卷)(含答案)
- 中国抗真菌药物临床应用指南(2025年版)
- 2026年春节后复工复产“开工第一课”安全生产培训课件
- (完整版)阀门流程工艺
- 智能门锁采购投标方案(技术方案)
- 年残疾人就业保障金相关政策精讲
- 玉石之分-课件.正式
- SMT炉后检查作业指导书V1.0
- 胸膜疾病讲解
评论
0/150
提交评论