




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序是解决某种问题的一组指令的有序集合。著名计算机科学家沃思(NikiklausWirth)提出一个公式:程序=数据结构+算法,学习的意义,程序是什么?,对数据的描述。在C语言中,体现为数据类型的描述!,对数据处理的描述。是为解决一个问题而采取的方法和步骤,是程序的灵魂!,结论:学好C语言首先就必须十分了解C语言的数据类型、运算符与表达式。,本章所介绍的数据类型,2.1常量与变量1.标识符定义:用来标识变量、常量、函数等的字符序列组成:只能由字母、数字、下划线组成,且第一个字母必须是字母或下划线C语言的关键字不能用作变量名大小写敏感长度:有效长度为32个字符。随系统而异,但至少前8个字符有效命名原则:变量名和函数名中的英文字母一般用小写,以增加可读性见名知意不宜混淆如l与I,o与0,在TC2.0及BC3.1中,变量名(标识符)的有效长度为个字符,缺省值为,但在VC中其长度可达到255,例:判断下列标识符号合法性sumSumM.D.JohndayDate3daysstudent_name#33lotus_1_2_3charab_above$123,M.D.John,3days,#33,char,$123,ab,.字符非法,数字3不可作首字符,#字符非法,char是关键字,字符非法,$不可作首字符,2.常量定义:程序运行时其值不能改变的量(即常数)常量的分类:直接常量(值常量)整型常量:10、15、-10、-30实型常量:12.5、30.0、-1.5字符常量:A、b、c字符串常量:“sum”、“A”、“123”符号常量用标识符来代表常量。其定义格式为:,#define符号常量常量,#defineNUM20#definePI3.1415926,#include#definePRICE30voidmain()intnum,total;num=10;total=num*PRICE;printf(total=%d,total);,运行结果:total=300,行尾不能有分号define前面一定要有#符号常量名最好使用大写符号常量名最好有意义,3.变量定义:程序运行时其值可以被改变的量变量的两要素:变量名、变量值变量的定义格式:变量的初始化:定义时赋初始值变量的使用:先定义,后赋值变量定义位置:一般放在函数开头,存储类型数据类型变量名1,变量名2,变量名n;,intx,y,z;floatradius,length,area;charch;,决定分配字节数和数的表示范围,合法标识符,例:inta=2,b,c=4;floatdata=3.67;charch=A;intx=1,y=1,z=1;intx=y=z=1;,例1:intstudent;stadent=19;/Undefinedsymbolstatentinfunctionmain,例2:floata,b,c;c=a%b;/Illegaluseoffloatingpointinfunctionmain,3.3整型数据,1.整型常量,三种表示形式,十进制整数:由数字09和正负号表示.如:123,-456,0八进制整数:由数字0开头,后跟数字07表示.如:0123,011十六进制整数:由0 x或0X开头,后跟09,af,AF表示.如0 x123,0Xff,定义整数的符号常量#defineNUM120/十进制数20#defineNUM2020/八进制数(十进制16)#defineNUM30 x2a/十六进制数(十进制42),思考题:下列整型常量哪些是非法的?012,oX7A,00,078,0 x5Ac,-0 xFFFF,0034,7B。,首字符不能是字母o,八进制数中不能有数字8,十进制数中不能有字母B,2.整型变量,整型变量的定义,int变量名,变量名2,变量名n;,int必须小写,至少一个空格,必须为合法的标识符,以逗号,分隔,以分号;结尾,定义时可以赋初值,方法:在变量名后面增加“=数值”,例:inta;intx,y,z;intm=2,y=-3;,整型变量的分类,基本整型:int控制变量是否有符号:signed(有符号)和unsigned(无符号)控制整型变量的值域范围:short(短)和long(长)。,有符号基本整型(int或signedint):最高位为符号位,其它的为数据位无符号基本型(unsinged或unsingedint):都是数据位不管是由符号还是无符号,整型占一个机器字大小的内存单元。TC或BC3.1下,整型变量占2个字节(16位)的内存单元,所以对于有符号基本整型,其表示范围为(-215215-1),对于无符号基本整型,其表示范围为(0216-1);VC6.0下,变量占4个字节(32位)的内存单元。,如果定义变量时,不指定signed,也不指定unsigned,则默认为signed(有符号),inta=2;unsignedintb=2;在内存中存储的形式为:,inta=-2;/定义一个无符号整型变量a,并赋初值-2unsignedb=-2;在内存中的存储形式为:,对于a而言,它的最高位是符号位,所以计算机在使用a时,先对a的最高位进行判断,若最高位为1,表明该数为负数,计算机会对后面的15位进行取反加1操作,得到a的绝对值;对于b而言,它的16位均为数据位,所以b的值其实等于65534。,结论:对于有符号数也好还是无符号数也好,其实在计算机内存中表示是不加区分的,都是以其补码形式表示,只是我们怎样看待最高二进制位的问题,如果把最高位当成符号位看待,则为有符号数,如果把最高位当成数据位看待,则变为无符号数。,有符号短整型(shortint或short),shortinta=2;/定义一个有符号短整型变量a,并赋初值2或shorta=2;占用的内存单元为2个字节,无论是TC、BC,还是VC。,无符号短整型(unsignedshortint或unsignedshort),unsignedshortinta=2;/定义一个无符号短整型变量a,并赋初值2或unsignedshorta=2;占用的内存单元字节数同short类型。,在TC2.0和BC3.1下,unsignedshort类型与unsignedint类型是等价的。,有符号长整型(longint或long),longinta=234567;/定义一个有符号长整型变量a,并赋初值234567或longa=234567;占用的内存单元为4个字节,无论是TC、BC,还是VC。,无符号长整型(unsignedlongint或unsignedlong),unsignedlonginta=2;/定义一个无符号长整型变量a,并赋初值2或unsignedlonga=2;占用的内存单元字节数同long类型。,在VC中long与int类型基本相同,均占四个字节的内存单元;但在TC或BC中,long类型与int类型只是所占字节不同外(long占4字节,int占2字节),其它数据处理方法是一样的。,3.浮点型数据,浮点型常量(实数或浮点数),十进制小数形式:由数字09和小数点组成.如:0.0,5.6,-5.指数形式:由十进制数,加阶码标志e或E以及阶码(只能为整数,可以带符号)组成.其一般形式为:aEn其中:a为十进制数,n为十进制整数,都不可缺少。其可表示为a10n,合法的实数表示:2.1E5表示2.1105,3.7E-2表示3.710-2。,非法的实数表示:345(无小数点),E7(阶码标志E之前无数字),-5(无阶码标志),50.-E3(负号位置不对),实型变量,单精度实型(float)floatf=3.14,g;这种定义的变量在内存中占4个字节(32位)的存储单元。双精度实型(double)doublex,y;这种定义的变量在内存中占8个字节(64位)的存储单元。长双精度实型(longdouble)longdoublex,y;在TC或BC下,这种定义的变量在内存中占10个字节(80位)的存储单元;在VC下则占8个字节(64位)。,6.字符型数据和字符串常量,字符型常量,定义:用单引号括起来的单个普通字符或转义字符.,如aA?n101,字符常量的值:该字符的ASCII码值,如A65,a97,048,n10,转义字符:反斜线后面跟一个字符或一个代码值表示,如101-A012-n376-x61-a60-0483-(),例:A-101-x41-65,字符型变量字符型数据类型符是char(字符character)在内存中占1个字节(8位)字符变量存放字符ASCII码char与int数据间可进行算术运算存在有符号和无符号之分。默认情况下为有符号,例:charch;unsignedcharC=B;,例:a=D;/a=68;x=A+5;/x=65+5;s=!+G/s=33+71;,字符串常量定义:用双引号(“”)括起来的字符序列,存储:每个字符串尾自动加一个0作为字符串结束标志,例:charch;ch=“A”;,例:charch;ch=A;,例:“hello”,“123”,ab1.56,字符常量与字符串常量不同,3.4C语言的运算符与表达式,变量用来存放数据,运算符则用来处理数据。用运算符将变量和常量连接起来的符合C语法规则的式子被称为表达式。,运算符的分类:单目运算符:只带一个操作数的运算符。如:+、-运算符。双目运算符:带两个操作数的运算符。如:+、-运算符。三目运算符:带三个操作数的运算符。如:?运算符。,学习运算符时应注意:运算符的功能:该运算符主要用于做什么运算。与运算量关系:要求运算量的个数及运算量的类型。运算符的优先级:表达式中包含多个不同运算符时运算符运算的先后次序。运算符的结合性:同级别运算符的运算顺序(指左结合性还是右结合性)。运算结果的类型:表达式运算后最终所得到的值的类型。,1.赋值运算符、赋值表达式,赋值运算符(“”,双目运算符),一般形式:,变量=常量或变量或表达式,功能:将右边常量或变量或表达式的值赋给左边变量,例如:intx,y,z;x=20;y=x;z=x+y;,赋值表达式,定义:,由赋值运算符或复合赋值运算符(后面即将介绍),将一个变量和一个表达式连接起来的表达式,称为赋值表达式。,一般格式:,变量(复合)赋值运算符表达式,赋值表达式的值:被赋值变量的值。,例如:“a=5”这个赋值表达式,变量a的值“”就是它的值。,赋值语句,例如:x=8;a=b=c=5;,定义:赋值表达式在其后面加分号就构成了赋值语句。,赋值运算符及赋值表达式的使用,多个变量连续赋值,例如:a=b=c=10;,a=(b=(c=10);,结果:a、b、c的值都为10,赋值表达式的嵌套,例如:a=(b=2)+(c=3),(a=(b=2)+(c=3),结果:b为2,c为3,a为b+c即5,注意:赋值语句“=”左边必须是变量名或对应某特定内存单元的表达式(后面的章节会遇到这样的表达式),不能是常量或其它表达式。例如:30=a;b+2=5;都是错误的。赋值语句中的“=”表示赋值,不是代数中相等的意思。要表示相等的意思则应用关系运算符“=”表示,二者切勿混淆!,2.强制类型转换符,C语言的数据类型是可以相互转换的。转换的方法有两种:一种是自动转换,一种是强制转换。,自动转换,例如:inta=2.5;则a的值将是2,而不是2.5。这种自动改变等号右边表达式值的数据类型的操作称为数据类型的自动转换。,首先将等号右边的表达式的值转换成“=”左边的数据类型。然后再赋值给等号左边的变量。,(1)短长度的数据类型长长度的数据类型,方法:直接将无符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分,长长度的数据类型数据的高位部分补零。,无符号短长度的数据类型无符号或有符号长长度的数据类型,xxx,无符号短长度的数据类型,0,0,.,.,.,.,.,0,.,.,.,.,.,高位部分补0,例如:unsignedcharch=0 xfc;unsignedinta=0 xff00;/假设int数据为16位intb;unsignedlongu;b=ch;/b的值将是0 x00fcu=a;/u的值将是0 x0000ff00,2.强制类型转换符,自动转换,(1)短长度的数据类型长长度的数据类型,方法:直接将有符号短长度的数据类型的数据作为长长度的数据类型数据的低位部分,然后将低位部分的最高位(即有符号短长度数据的符号位)向长长度的数据类型数据的高位部分扩展。,有符号短长度的数据类型无符号或有符号长长度的数据类型,zxx,有符号短长度的数据类型,z,符号位向高位部分扩展,z,z,符号位,例如:charch=2;inta=-2;intb;unsignedlongu;b=ch;/b的值将是2u=a;/u的值将是0 xfffffffe,2.强制类型转换符,自动转换,(2)长长度的数据类型短长度的数据类型,方法:直接截取长长度的数据类型数据的低位部分(长度为短长度的数据类型的长度)作为短长度数据类型的数据。,例如:inta=-32768;/假设int数据为16位unsignedlongb=0 xffffaa00;charch;intc;ch=a;/ch的值将是0c=b;/c的值将是0 xaa00,(3)长度相同的数据类型转换,方法:数据按照原样复制即可。,例如:inta=0 xff00;unsignedintb=a;/b的值将是0 xff00,2.强制类型转换符,强制转换,强制类型转换是通过类型转换运算来实现的。其一般形式为:,(类型说明符)(表达式),功能:把表达式的运算结果强制转换成类型说明符所表示的类型。其中,(类型说明符)是强制类型转换符,它的优先级比较高。,例:floatx=3.5,y=2.1,z;inta;a=(int)(x+y);/结果为5z=(int)x+y;/结果为5.100000z=(double)(3/2);/结果为1.000000a=(int)3.6;/结果为3,精度损失问题,注意:在使用强制转换时应注意以下问题:类型说明符和表达式都必须加括号(单个变量可以不加括号)。例如:把(int)(x+y)写成(int)x+y则成了把x转换成int型之后再与y相加了。无论是强制转换或是自动转换,都只是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。例如,(double)a只是将变量a的值转换成一个double型的中间量,其数据类型并未转换成double型。,基本算术运算符:+-*/%结合方向:从左向右优先级:-*/%-+-(2)(3)(4)说明:“-”可为单目运算符时,右结合性两整数相除,结果为整数%要求两侧均为整型数据,例:5/2=-5/2.0=,例:5%2=-5%2=1%10=5%1=5.5%2,3.算术运算符、算术表达式,2,-2.5,1,-1,1,0,(),表达式和算术表达式,3.算术运算符、算术表达式,表达式:用运算符和括号将运算对象(常量、变量和函数等)连接起来的、符合语言语法规则的式子。算术表达式:表达式中的运算符都是算术运算符的表达式。,运算符优先级(到目前为止),例:3+5*8、(x+y)/2-1等,自增、自减运算符+-作用:使变量值加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=(a+)*b;,/k=4,j=4,/k=3,j=4,/4,/3,/c=20,a=4,/c=15,a=4,4.自增自减运算符、符号运算符,负号运算符(“-”)减号()既是一个算术运算符,又是一个负号运算符。负号运算符是单目运算符。例如:a=2,那么a的值就是2。负号运算符的优先级比较高,与强制类型转换符是同一个级别。,自增、自减运算符注意事项+和-运算符只能用于变量,不能用于常量和表达式。因为+和-蕴含着赋值操作。例如:5+、-(a+b)都是非法的表达式。负号运算符、+、-和强制类型转换运算符的优先级相同,当这些运算符连用时,按照从右向左的顺序计算,即具有右结合性。两个和之间不能有空格。在表达式中,连续使同一变量进行自增或自减运算时,很容易出错,所以最好避免这种用法。例如:+i+是非法的。自增、自减运算,常用于循环语句中,使循环控制变变量加(或减)-,以及指针变量中,使指针指向下(或上)一个地址。,4.自增自减运算符、符号运算符,例:intp,i=2,j=3;p=-i+;p=?i=?p=i+j;p=?i=?j=?p=i+-j;p=?i=?j=?p=i+-j;p=?i=?j=?p=i+i+;p=?i=?p=+i+(+i);p=?i=?,-2,3,5,3,3,4,2,2,4,3,2,4,4,4,8,5.算术运算符中数据类型转换规则,#includevoidmain()floata,b,c;a=7/2;/计算7/2得int型值3,因此a的值为3.0b=7/2*1.0;/计算7/2得int型值3,再与1.0相乘,因此b的值为3.0c=1.0*7/2;/先计算1.0*7得double型的结果7.0,然后再计算7.0/2,因此c的值是3.5printf(a=%f,b=%f,c=%f,a,b,c);,a=3.000000,b=3.000000,c=3.500000,6.位运算符、位运算表达式,位运算符:按位与(a2:将a所对应的二进制数左移两位,该表达式的值为12。2)右移运算实现将某变量所对应的二进制数往右移位,溢出的最低位被丢掉,如果变量是无符号数,空出的高位用零填补,如果变量是有符号数,空出的高位用原来的符号位填补(即负数填1,正数填0)。其一般格式为:,返回整型值的表达式返回整型值的表达式,例:inta=8;a2:将a所对应的二进制数右移两位,该表达式的值为2。,例:将short类型数据的高、低位字节互换#includevoidmain()shorta=0 xf245,b,c;b=a8;/将a的高8位移到低8位赋值给c,c的值为0 xfff2c=c,a=0 x45f2,位运算之间的优先级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,/逗号表达式,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 IEC 62453-1:2025 EN Field device tool (FDT) interface specification - Part 1: Overview and guidance
- 【正版授权】 ISO 80000-9:2019/AMD1:2025 EN Amendment 1 - Quantities and units - Part 9: Physical chemistry and molecular physics
- 新版部编人教版一年级下册道德与法治全册教案
- 重庆课件研发
- 暑假新课预习提升练:第三单元检测卷《分数除法》(含解析)-2024-2025学年人教版六年级数学下学期
- 重庆市课件大赛
- 外研版(一起)五年级英语上册Module 1~10单元达标测试卷(共10套含答案)
- 突破与量有关的化学(离子)方程式的书写(含解析)-2026届高中化学一轮复习讲义
- 重工作业课件
- 老年人防毒知识培训课件
- JJG 667-2025 液体容积式流量计检定规程
- 呼吸衰竭患者的急救及护理
- 脊膜瘤的护理查房
- 法拍房介绍课件
- 器械gcp培训课件
- 【课件】数轴(课件)数学人教版2024七年级上册
- 乌镇景区管理制度
- 跨流域生态服务权衡-洞察及研究
- 公司意识形态管理制度
- 建筑行业技术总工岗位职责
- 《茶叶加工技术》课件
评论
0/150
提交评论