




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章:基本数据类型、运算符与表达式,学习的意义,学习C语言的目的是什么?目的可能是为了:期末考试等级考试研究生考试程序员考试,最终目的是:用C语言编写程序来解决实际问题!,程序是什么?,程序是解决某种问题的一组指令的有序集合。著名计算机科学家沃思(NikiklausWirth)提出一个公式:程序=数据结构+算法,学习的意义,程序是什么?,对数据的描述。在C语言中,体现为数据类型的描述!,对数据处理的描述。是为解决一个问题而采取的方法和步骤,是程序的灵魂!,结论:学好C语言首先就必须十分了解C语言的数据类型、运算符与表达式。,掌握变量和常量的概念;理解各种类型的数据在内存中的存放形式;掌握各种类型数据的常量的使用方法;掌握各种整型、字符型、浮点型变量的定义和引用方法;了解调用printf函数输出各种类型数据的方法;掌握数据类型转换的规则以及强制数据类型转换的方法;掌握赋值运算符、算术运算符、位运算符、逗号运算符以及sizeof的使用方法;理解运算符的优先级和结合性的概念,记住所学的各种运算符的优先级关系和结合性。,学习目标,2.1C语言数据类型,数据类型决定:1.数据占内存字节数2.数据取值范围3.其上可进行的操作,本章所介绍的数据类型,2.2常量、变量1.常量定义:程序运行时其值不能改变的量(即常数)常量的分类:直接常量(值常量)整型常量: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前面一定要有#符号常量名最好使用大写符号常量名最好有意义,2.2常量、变量2.变量定义:程序运行时其值可以被改变的量变量的两要素:变量名、变量值变量的定义格式:变量的初始化:定义时赋初始值变量的使用:先定义,后赋值变量定义位置:一般放在函数开头,存储类型数据类型变量名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,2.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.整数在内存中的表示,整数的数值在内存中用补码的形式存放。求一个整数补码的方法:(假设用n个二进制位的内存单元来存储它),如果是正整数,采用符号-绝对值表示,即最高有效位(符号位)为0表示正,数的其余部分则表示数的绝对值;如果是负整数,则先写出与该负数相对应的正数的补码表示,然后将其按位求反,最后在末位(最低位)加1;然后将上述求得的补码的低n位存放于内存单元之中,就得到了该整数在内存中的表示,内存单元的最高位是符号位(0表示正,1表示负)。,在TC2.0或BC3.1下,一个整数默认情况下需要2个字节(16位)的内存单元存放;而在VC6.0下,则需要4个字节(32位)。,3.整型变量,整型变量的定义,int变量名,变量名2,变量名n;,int必须小写,至少一个空格,必须为合法的标识符,以逗号,分隔,以分号;结尾,定义时可以赋初值,方法:在变量名后面增加“=数值”,例:inta;intx,y,z;intm=2,y=-3;,当程序中定义了一个变量时,计算机会为这个变量分配一个相应大小的内存单元。因此,这个变量是有值的,它的值就是对应内存单元的值。如果定义时没有赋初值,则这个值程序员是无法预知的。,整型变量的分类,修饰符控制变量是否有符号:signed(有符号)和unsigned(无符号)控制整型变量的值域范围:short(短)和long(长)。,有符号基本型(int)inta=-2;/定义一个有符号整型变量a,并赋初值-2占一个机器字大小的内存单元。TC或BC3.1下,变量占2个字节(16位)的内存单元;VC6.0下,变量占4个字节(32位)的内存单元。,如果定义变量时,不指定signed,也不指定unsigned,则默认为signed(有符号),符号位,变量a占用的内存单元(2字节),有符号整型变量在内存中的实际存放形式(假设在BC3.1下),无符号基本型(unsignedint或unsigned),unsignedinta=2;/定义一个无符号整型变量a,并赋初值2或unsigneda=2;占用的内存单元字节数同int类型。,unsignedinta=-2;/定义一个无符号整型变量a,并赋初值-2或unsigneda=-2;,无符号整型变量在内存中的实际存放形式(假设在BC3.1下),数据位,变量a占用的内存单元(2字节),其值为:65534!,注意:对于有符号数也好还是无符号数也好,其实在计算机内存中表示是不加区分的,都是以其补码形式表示,只是我们怎样看待最高二进制位的问题,如果把最高位当成符号位看待,则为有符号数,如果把最高位当成数据位看待,则变为无符号数。例如:unsignedinta=-2;printf(“%d”,a);-有符号输出,则为-2printf(“%u”,a);-无符号输出,则为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字节),其它数据处理方法是一样的。,【例】各种整型变量的定义,#include#defineSUM65535voidmain()inta,b=20;unsignedintc=0 xff;longD;a=SUM;D=301;printf(a=%dn,a);printf(b=%dn,b);printf(c=%dn,c);printf(“D=%dn”,D);,/文件包含,头文件说明,/定义符号常量SUM,值为65535,/定义两个int型变量a和b,b赋初值20,/定义无符号整型变量c,并赋初值0 xff,/定义长整型变量D,/对a赋值为SUM,这时a的值是65535,/对D赋值为301,/以有符号十进制形式(%d)显示a的值,/以有符号十进制形式(“%d”)显示b的值,/以有符号十进制形式(%d)显示c的值,/以有符号十进制形式(%d)显示D的值,变量定义部分,语句执行部分,在BC3.1下运行结果:a=-1b=20c=255D=301,在VC6.0下运行结果:a=65535b=20c=255D=301,对于16位的有符号整型变量a来说,因65535在内存中的形式为1111111111111111,最高位为1表示负,则其所对应的十进制数就为-1。,4.整数常量的分类,根据其值所在范围确定其数据类型。在TC2.0或BC3.1下,如果整型常量的值位于-3276832767之间,C语言认为它是int型常量;如果整型常量的值位于-21474836482147483647之间,C语言认为它是long型常量。整型常量后加字母l或L,认为它是longint型常量。比如123L、45l、0XAFL。无符号数也可用后缀表示,整型常数的无符号数的后缀为U或u。例如:358u,0 x38Au,235Lu均为无符号数。,前缀、后缀可同时使用以表示各种类型的数。如0XA5Lu表示十六进制无符号长整数A5,其十进制为165。其实整型常数这种表示无符号数意义不大,在机器内部它还是用其补码表示,例如-1U和-1在内存中表示是一样的,数据处理也一样,所以有的教科书上说“常量无unsigned类型”,其实有,但无意义。,5.实型数据,实型常量(实数或浮点数),十进制小数形式:由数字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位)。,注意:三种实数类型中,其精度是floatdoublelongdouble;longfloat实际上就是double,因此,没有longfloat类型;所有的实型常量按照double类型处理。,5.实型数据,实型数据的精度,#includevoidmain()floata;/定义float型变量adoubleb,c;/定义double型变量b和ca=123.456789;/对变量a赋值为123.456789b=a;/将变量a赋给变量bc=123.456789;/对变量c赋值为123.456789printf(a=%fb=%lfc=%lfn,a,b,c);,123.456787,123.456787,123.456789,a=123.456787b=123.456787c=123.456789,float型变量最多只能精确表示8个数字,因此显示a的值时,只能有效显示前面8个数字即123.45678,最后追加一位数字7是随机的,6.字符型数据和字符串常量,字符型常量,定义:用单引号括起来的单个普通字符或转义字符.,如aA?n101,字符常量的值:该字符的ASCII码值,如A65,a97,048,n10,转义字符:反斜线后面跟一个字符或一个代码值表示,如101-A012-n376-x61-a60-0483-(),例:A-101-x41-65,例:转义字符举例#includevoidmain()printf(101x42Cn);printf(Isay:Howareyou?n);printf(CProgramn);printf(VisualC);,运行结果:(屏幕显示)ABCIsay:”Howareyou?”CProgramVisualC,例:voidmain()printf(“Yb=n”);,运行结果:屏幕显示:=,说明:转义序列有两种形式:图形符号:常用的控制字符(0-31)ddd或xhh:表示字符集中的任一字符(0-127(255)ddd或xhh表示以ddd或xhh为字符码的字符。ddd,表示1-3个八进制数,可用前缀0。hh,表示1-2个十六进制数,x前缀不可省。例:t,011,11,x09,x9A,101,x41,单引号和反斜线必须用转义序列表示。例:,047,x27,134,x5c双引号字符常量可以用图形符号或两种转义序列中的任一种表示。,042,x22。字符0是值为0的字符(空字符),不是空白字符。0除表示0值以外,它强调对象的类型是字符。,字符串常量定义:用双引号(“”)括起来的字符序列存储:每个字符串尾自动加一个0作为字符串结束标志,例1:字符串“HELLO”在内存中,例2:空串“”,0,字符常量与字符串常量不同,例:charch;ch=“A”;,例:charch;ch=A;,字符型变量字符型数据类型符是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;,没有字符串变量,用字符数组存放,7.简单数据类型的表示范围,符号位,十六位整型数所表示的数据范围,数据位,【例】变量的存储范围,#includevoidmain()charch;intx;ch=80+50;x=80+50;printf(ch=%dn,ch);printf(x=%dn,x);,ch=-126x=130,为什么?,十进制数对应的机器数(补码)800000000001010000ch+5000000000001100100000000010000010,10000010,符号位,真值:-126,8.简单的数据输出,C语言中没有用于输出的语句,只能通过标准库函数的调用来完成数据的输出任务。库函数的一般调用格式为:,函数名(参数1,参数2,参数n);,printf函数:,例:printf(Howareyou!);,输出:Howareyou!,例:inta=100;printf(variablea=%d,a);,输出:variablea=100,%d:用于显示有符号整型数据,如int、short型数据;%u:用于显示无符号整型数据,如unsignedin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 六一活动忆童年活动方案
- 六一活动游街活动方案
- 六一活动踢球活动方案
- 六一游园手工活动方案
- 六一玩具团队活动方案
- 六一结对活动方案
- 六一节团委活动方案
- 六一节景区活动方案
- 六一葵花义卖活动方案
- 医生的考试试题及答案
- 2022年长春中医药大学辅导员招聘考试笔试试题及答案解析
- 企业家刑事法律风险及其防范(课件)
- 实用文档2021近四年小米公司财务报表分析
- 部编版小学道德与法治三年级下册期末质量检测试卷【含答案】5套
- 立式圆筒形储罐罐底真空试验记录
- 小学生劳动教育评价细则
- 民法典案例解读PPT
- 质 量 管 理 体 系 认 证审核报告(模板)
- 肿瘤科新护士入科培训和护理常规
- 第4章 颌位(双语)
- 塔吊负荷试验方案
评论
0/150
提交评论