




已阅读5页,还剩35页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章数据类型与运算符标识符的概念最基本的数据类型运算符,语言规定标识符只能由字母、数字和下划线三种字符组成,且第一个字符必须为字母或下划线。例:变量名sum_totallotus_1_2M.D.John¥123DabvoidintC保留字(也叫关键字)不能当标识符用,参见教材P39,标识符的命名规则,注意:必须避开C语言的关键字(保留字见书P365)C编译系统将大写字母和小写字母认为是两个不同的字符。例:inta,A;在选择变量名和其它标识符时,应注意做到“见名知意”。例:student_name,StudentName,StdName为了程序的可移植性,标识符的长度最好不要超过8个字符。习惯上,符号常量名全用大写。(变量可用大小写混写),好的编程习惯(抄笔记),第三章标识符的概念最基本的数据类型运算符,构造类型,指针类型,空类型void,参见教材P37,辅助记忆:int:integerchar:characterstruct:structureenum:enumerate,3.1C的数据类型,3.2.1常量和符号常量在程序运行过程中,其值不能被改变的量称为常量。,整形常量:2-10浮点型常量:2.31-3.0.4字符常量:2a字符串常量:”ab”这是我”-0.02”符号常量:#definePI3.1415926/*宏定义*/,3.2数据常量与变量,常量分类,C语言中,整型常量可用不同进制表示:1)十进制:intx=83,y=-26;2)八进制:数字以0开头inta=0123;=1*82+2*81+3*80=833)十六进制:数字以0 x开头inta=-0 x1A;=-(1*161+10*160)=-26,例:符号常量的定义与使用#definePRICE30/*宏定义*/#includevoidmain()intnum;num=10*PRICE;printf(num=%dn,num);,运行结果:num=300,注意:不能给符号常量赋值PRICE=40;/*语法错误*/,3.2.2变量变量代表内存中具有特定属性的一个存储单元。所谓给变量赋值,实际上是先通过变量名找到相应的内存地址,再向该存储单元中写入数据。,回顾:内存的概念是RAM,掉电则数据消失以字节为单位,1个字节8位每个字节一个编号(地址),语法格式:数据类型变量名;,整数型inta,b=0 x100;longx=7,y,z=011;实数型floath;doubles67.4;字符型chara1m,a2;,技巧:欲知变量所占内存空间的字节个数,则printf(%d,sizeof(float);或者printf(%d,sizeof(h);,共六种,有符号整型有符号短整型有符号长整型无符号整型无符号短整型无符号长整型,(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int),注意:1.括号表示其中的内容是可缺省的。例:longx;unsignedlongy;2.VC下变量占用的内存字节数:改教材P43,3.3整型变量,区别:有符号整形变量的最高位是“符号位”,且负数是补码形式的。无符号整形没有“符号位”,只能表示正整数和0。例:intx;unsignedintx;,思考:unsignedint型能存放的最大的整数是?int型变量能存放的最大的整数是?,232-1,231-1,unsignedintk=0 xFFFFFFFF;,11110111110110011111111010111111,*了解:有符号整型变量在内存中是以二进制补码形式存放的。,*二进制补码形式正数的补码:就是自身inta=10;00000000000000000000000000001010,负数的补码:该数绝对值的二进制,按位取反加1inta=-10;00000000000000000000000000001010取反11111111111111111111111111110101加111111111111111111111111111110110,*使用补码的好处:1)使0有了单一的存储形式2)使减法变成了加法例:8-108的补码+10的补码,#includevoidmain()inta;a=-100000*100000;printf(%dn,a);,01111111111111111111111111111111=231-1,inta;(VC时,分配4字节空间)能表示的最大整数为:,常见逻辑错误:数据溢出(overflow),*思考:int型变量能表示的最小的整数为:,10000000000000000000000000000000=-231,C语言中,浮点型常量的表示方法,小数形式指数形式,0.012或.121.2e-2或1.2E-2,注意:字母e(或E)之前必须有数字,且e后面的指数必须为整数。,doublea=1.8E-3,b=-12e0,c=.1e-3;doublex=e3,z=3E,k=2e0.8,y=3e(-2);,3.4浮点型数据,计算机中小数存储方式,定点型:小数点的位置事先已有约定,不再改变。,浮点型:小数点在逻辑上是不固定的。,浮点数优点:同样大小的空间,可以存放远比定点数取值范围大得多的数。缺点:运算规则比定点数复杂的多,运算过程慢。,VC环境下:float类型变量占4个字节:-3.4e38+3.4e38double类型变量占8个字节:-1.7e308+1.7e308,双精度浮点数的优点:1)比单精度浮点数能存储更大的数或更小的数。2)精度高单精度浮点数的优点:所需内存少,运算速度快于double类型。(这对大型应用程序中非常重要!)举例分析:例1)家庭记账软件(注意:消费支出金额形如“35.45元”)例2)全球人口数字统计(注意:unsignedlong变量最大值仅为42亿),*仅了解:浮点型数据计算后有可能产生舍入误差,运算后,float:十进制结果的前67位有效数字是准确的double:十进制结果的前1516位有效数字是准确的,注意:C语言中,将浮点型常量都默认为双精度型的常量。例:floatk;k=1.3;warningC4305:=:truncationfromconstdoubletofloat,3.5字符型数据,注意:一个字符变量只能存放一个字符。例:charc1,c2=b;c2=c1;c1=apple;,error:toomanycharactersinconstant,warning:localvariablec1usedwithouthavingbeeninitialized,*思考:chara=3;chara=3;,charc1=a,c2=A;等价为c1=9765,01100001,00110111,00000011,00110011,参见p364ASCII码表,AmericanStandardCodeforInformationInterchange,字符变量在内存中如何存储?,书eg3.6:写出运行结果,#includevoidmain()charc1,c2,c3;c1=97;/*等价为c1=a;*/c2=98;c3=1;printf(%c%c%cn,c1,c2,c3);printf(%d%d%dn,c1,c2,c3);,ab97981,书eg3.7:大小写字母之间的变换关系,#includevoidmain()charc1,c2;c1=a;c2=b;printf(%c%cn,c1,c2);c1=c1-32;c2=c2-32;printf(%c%cn,c1,c2);,abAB,常见题型必须掌握,记忆:小写字母的ASCII码-32=大写字母的ASCII码,printf(“班级t姓名t学号t成绩n”);printf(一班t张全t022229t83.5n);printf(十二班t王方新t116t95n);printf(01,016);printf(,);,转义字符:见书48页(仅要求掌握以下几种),不能敲键盘输入的字符,在程序中写八进制ASCII值,t为制表符,强制显示在下一字段(屏幕上8个字符位为1个字段),因为在字符串中具有特殊意义,所以要想作为普通字符输出,需要再添加一个转义标志。,第三章标识符的概念最基本的数据类型运算符,参见p365,(加法运算符,或正值运算符,如:、)(减法运算符,或负值运算符,如:-.0、-)*(乘法运算符)(除法运算符(模运算符,或称求余运算符,两侧均应为整型数据。例如:的值为,84的值为0)。,3.8算术运算符和算术表达式,何谓表达式:例如:*max(x,y)概念辨析:赋值表达式:a=10赋值语句:a=10;,i+与+i的区别:前缀:是i先自增一后,再使用的值;后缀:是先使用的值后,再自增一。例如:已知i=3;等价为:i=i+1;j=i;(所以i=,j=4);等价为:j=i;i=i+1;(所以i=4,j=3),自增运算符+,自减运算符-,学生练习:写出运行结果#includevoidmain()intnum=0;printf(num=%dn,num+);printf(num=%dt,+num);,运行结果num0num2,常见题型掌握分析方法,注意:自增、自减运算符只能用于变量,而不能用于常量或表达式。因为计算结果无处可存错误:+5,+(x+y),优点:执行速度快用途:1、自增(减)运算符常用于循环语句中,使循环变量自动加。2、也常用于指针变量,使指针指向下一个地址。,好的编程习惯:(抄笔记)为了清晰运算的先后顺序,建议多用()。例如:不要写成i+j的形式,而应写成(i+)+j,自动转换规则(见教材P54)级别高doublefloat级别低intchar,3.7各类数据类型的混合运算,不同类型的数据做运算时,系统会自动转换成精度最高类型,然后进行运算。,例:10+B+65.1*3,思考:怎样得到1.66666这个值?,=1,必须改为5.0/3或5/3.0,强制类型转换运算符:将一个表达式转换成所需类型。格式:(类型名)表达式(float)(5%3)(int)(3.9+4.9)(int)3.9+4.9,小结:共有两种类型转换1)运算时不必用户指定,系统自动进行的类型转换,如3+6.5。2)当自动类型转换不能实现目的时,程序员强制要求进行某种类型转换,如b=(int)a%3;floatk=(float)1.3;,表达式的值为:2.0000,表达式的值为:8(规则:8.8小数甩掉),表达式的值为:7.9000,编程经验:如何四舍五入?(int)(x+0.5)/先加0.5,赋值表达式:变量=表达式最常见的语法问题:符号常量=55;/错,常量在运行中不能改变值!,3.9赋值运算符和赋值表达式,inta=b=c=5;/错,应改为:inta=5,b=5,c=5;或者改为:inta,b,c;a=b=c=5;,printf(“%d”,a=b+4);/语法正确,但可读性差,*高精度数被赋给低精度变量,会舍弃什么?例:floatf=1.6f;inti;i=f;/系统自动舍弃实数的小数部分,且会语法警告*长字节整数被赋给短字节整数变量,会舍弃什么?例:inta=300;charc;c=a;/系统自动舍弃高位(c被赋值为44)注意:这些都有可能引发逻辑错误。所以需了解一下.(*各种情况总结在书P6062),复合的赋值运算符,+=,-=,*=,/=,%=,=,,思考:为什么C语言要求变量必须“先定义,后使用”?目的之一:编译器据此来检查操作是否合法!如:floatf;f+;f%5;/语法错误目的之二:使操作系统知道该分配多大的内存空间!,本章综合训练:两数相加的程序,printf(“请输入第一个整数”);scanf(“%d”,/*输入前要先提示*/*格式化输入语句*/*输入前要先提示*/*格式化输入语句*/*赋值语句*/*格式化输出*/*正确返回操作系统*/,内存,scanf(“%d”,scanf(“%d”,sum=add1+add2;,2,5,7,add1,add2,sum,现场演示:在程序运行过程中,如何跟
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建筑工程起重机施工合同
- 护坡草坪施工方案
- 护坡桩施工方案
- 云南水泥顶管工程施工方案
- 大别山科技学校数学试卷
- 生物-安徽省天一大联考2024-2025学年(下)2025届高三3月调研考试试题和答案
- 2025年促肝细胞生长素项目合作计划书
- 江西跑步跑道地面施工方案
- 生活给水管道施工方案
- 湖北省宜昌市宜都市2024-2025学年九年级上学期1月期末化学试题(原卷版+解析版)
- 新中空玻璃标准
- 《锂离子电池介绍》
- 第3章-水文统计原理
- 斑马导丝热缩工艺
- 《工伤预防知识教育》课件
- 重症医学科品管圈PDCA案例四例
- 苏教版二年级科学下册第7课《栽小葱》课件PPT
- 《活着》读后感-课件
- 网店运营管理(第二版)课件全套 段文忠 第1-9章 网店运营基本原理- 战略化运营 动态竞争
- 煤矿机电事故及其防治措施
- 王思斌社会工作概论第3版课后习题答案完全
评论
0/150
提交评论