版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
思考:机器内存存放数据如下:访问X得到的值是多少?1000000010111001X:结论:在访问数据前需要知道数据是如何存储的。仅仅知道数据是如何存储的够不够?思考:已知X存储时占一个字节,即X的值为10000000,那X又等于多少呢?结论:不对数据事先下一个定义就可能会产生歧义。
那么数据在它们在内存里是如何存放的?计算机里的数据有哪几种描述?以及它们可以进行哪些运算呢?1000000010111001X:数据类型数据类型决定:1.数据占内存字节数;2.数据取值范围;3.数据可进行的操作难点:
各种数据类型的数据在内存中的存放形式重点:
变量与常量的概念、各种表达式的运算第2章数据类型、运算符和表达式
教学目的和基本要求:要求学生清楚数据类型与变量、常量的关系,掌握各种常量的性质和定义,掌握表达式中各种运算符的功能和特点,明白产生副作用的原因,了解数据类型的相互转换规则。第2章数据类型、运算符和表达式
2.1C语言的数据类型、常量2.2变量2.3运算符与表达式2.4数据类型转换
字符型(char)整型(short,int,long,unsigned)单精度型(float)实型双精度型(double)枚举类型(enum)
数组类型([])构造类型结构体类型(struct)共用体类型(union)指针类型(*)
空类型(void)基本类型数据类型C语言中的数据类型本章中将对基本类型中的前三类进行介绍和学习。2.1C语言的数据类型、常量2.1.1整型数据(采用定点整数的存储格式,只能表示纯整数)2.1C语言的数据类型、常量整型数据可分为四种:(1)基本型:int(2)短整型:short[int](3)长整型:long[int](4)无符号型:又可细分为三种①unsigned[int]②unsignedshort③unsignedlong2.1.1整型数据关键字 所占位数 取值范围
short16-32768~32767unsignedshort160~65535
int16-32768~32767unsigned160~65535
long32-2147483648~2147483647unsignedlong320~4294967295整型数据的存储:在C语言中,整型数据有三种表示方式:(1)十进制表示十进制整型常量:237-56801627(2)八进制表示(以0开头以区别于其他表示)八进制整型常量:015
0101
079、08001不合法的八进制数2.1.1整型数据整型常量的表示:在程序运行时,其值不能被改变的量叫常量,即常数。(3)十六进制表示(以0X开头以区别于其他表示)十六进制整型常量:0X2A
0XA0
0XFFFF5A、0X3H2.1.1整型数据不合法的十六进制数一般默认为短整型,但若数据超过短整型表示范围,将视之为长整型;另外可以在数据最后加后缀修饰符“L”(大小写均可),说明该数据为长整型。如:25l0125l
0X125l注意:25和25l的区别前者用2字节存储,后者则使用4个字节存储。思考:如何区分一个整型数据是长整型还是短整型呢?2.1.1整型数据数据前加有“+、-”的为有符号数,对于省略“+”的情况,系统默认为有符号数;另外可以在数据最后加后缀修饰符“U”(大小写均可),说明该数据为无符号数。如:358u
0x38Au235Lu思考:如何区分一个整型数据是无符号数还是有符号数呢?2.1.1整型数据注意:358和358u的区别前者数据最高位为符号位,后者最高位为数值位。2.1.2实型数据(也称为浮点型)2.1C语言的数据类型、常量实型数据可分为两种:(1)单精度型:float(2)双精度型:double关键字所占位数 取值范围 精度
float32±3.4×10-38~±3.4×10387double64±1.7×10-308~±1.7×10308
15实型数据的存储:在C语言中,实型数据有两种表示方式:(1)十进制小数形式十进制实型常量:3.44..3(2)指数形式:“十进制小数”+“e(或E)”+“十进制整数”指数形式实型常量:12.5e-6(表示12.5×10-6)
2.1.2实型数据实型常量的表示:当幂为正数时,正号可以省略,如:1.25E+3可写成1.25E32.1.2实型数据注意在指数表示形式中:小数点不能单独出现;如:0.√.0√.e或E的两边必须有数,且其后面必须为整数;如:6E0.2e5
34553.-E32.7E以下表示的实数是不是合法的?(无小数点,无阶码标志)(负号位置不对)(无阶码)2.1.3字符型数据2.1C语言的数据类型、常量字符型数据可分为两种:char、unsignedchar关键字 所占位数 取值范围
char8-128~127unsignedchar80~255
字符型数据的存储:在C语言中,字符型常量有两种表示方式:(1)用单引号括起来的一个字符如:‘A’、‘1’、‘?’字符型常量的表示:2.1.3字符型数据(2)由反斜杠(\
)引导的转义字符—P15表2.3及附录I:ASCII表
(主要用来表示那些不便于表示的控制字符)
转义字符转义字符的意义ASCII代码\n回车换行10\t横向跳到下一制表位置9\b退格8\r回车13\f走纸换页12\\反斜线符"\"92\'单引号符39\”双引号符34\a鸣铃7\ddd1~3位八进制数所代表的字符\xhh1~2位十六进制数所代表的字符2.1.3字符型数据如:\134表示反斜线\X0A表示换行字符A可以表示为‘A’、‘\x41’、‘\101’
注意:'5'和5的区别前者在内存里存放的是字符’5’的ASCII代码:53,后者存放的是:整数5。2.1.4字符串由多个字符构成的字符序列,称之为字符串。字符串的表示:
采用字符数组来表示(在第7章里介绍)。字符串常量:由一对双引号将字符序列括起来表示。例如:"ABC","A","123lkdf"2.1C语言的数据类型、常量字符串的存储:字符串常量在内存中存储时,系统自动在字符串的末尾加一个串结束标志:‘\0’,因此:长度为n个字符的字符串常量,在内存中占有n+1个字节的存储空间。例如:'a'与"a"是C语言中两种完全不同类型的数据。aa\0'a'与"a"在内存的存储形式注意:不要将字符常量和字符串常量混淆例如,字符串“ABCDEF”有6个字符,存储于内存中时,共占7个字节,最后一个字节为"\0"2.1.3字符型数据2.1.4符号常量符号常量:
可以使用一个符号表示一个多次常用的常量C语言中使用命令#define来定义:格式:#define符号常量名标识符常数表达式优点:符号常量使程序易于阅读和修改。例如,一个程序中多处用到学生人数60,当有学生人数改变为65,修改这个程序很困难。而使用符号常量,只要将#defineNUM60改为#defineNUM65,就可以了。#definePI3.14159无分号2.1C语言的数据类型、常量例:求一个半径为r的球的体积和表面积的C程序#definePI3.14159/*定义PI为符号常量,值为3.1415*/voidmain(){floatv,s,r;scanf(“%f”,&r);v=4.0/3.0*PI*r*r*rs=4*PI*r*r;printf("v=%f,s=%f\n",v,s);}说明:(1)符号常量名常常用大写字母、变量名用小写字母。(2)符号常量不能在其作用域范围内重新赋值。2.2变量
2.2.1变量的定义简单定义:在程序运行时,其值能被改变的量叫变量变量包括:一个名字和相应的数据类型通过名字来引用一个变量,而数据类型则决定了该变量的存储方式和在内存中占据存储单元的大小
说明:变量名和变量值这两个概念的区别定义:intx=20;C语言中使用的变量都要作类型强制定义,即要求“先定义,后使用”的原则。其目的:1)保证程序中变量名使用的正确性2)编译程序为其分配相应的储存单元3)保证运算的合法性定义形式:类型说明符变量名列表;2.2变量
charch/*定义ch为字符型变量*/inti,j;/*定义i,j为基本整型变量*/longk,n,m;/*定义k,n,m为长整型变量*/floatx,y,z;/*定义x,y,z单精度实型变量*/doublesum,t;/*定义sum,t双精度实型变量*/2.2.2变量的赋初值C语言中,当定义一个变量后,系统只是按定义的数据类型分配其相应的存储单元,并不对其单元初始化,如果在赋初值之前直接使用该变量,则是一个不定值。例如:voidmain(){intk;k++;printf(“k=%d\n”,k);}程序运行,输出k的值就是一个无意义的不定值,并在不同系统环境下运行的结果也可能完全不同。2.2变量赋初值的一般形式为:(1)类型说明符
变量1=值1,变量2=值2,……;
(2)类型说明符
变量1,变量2,变量3;变量1=值1;变量2=值2;……例如:inta=10,b=10,c=10等价于inta,b,c;a=10;b=10;c=10;注意:(1)在说明中不允许连续赋值,但在变量定义后,可以使用连续赋值语句初始化;
2.2变量如:inta=b=c=1;是不合法的;inta,b,c;a=b=c=1;是合法的(2)C语言中变量定义后若没有赋值,系统并不自动清0,如果直接使用它,其值将是一个“不确定的”.2.2变量
2.3运算符与表达式
2.3.1C语言中的运算符C语言中运算符和表达式数量之多,在高级语言中是少见的正是丰富的运算符和表达式使C语言功能十分完善。这也是C语言的主要特点之一。运算符的种类
C语言的运算符共有十三类见教材P182.3运算符与表达式
学习运算符应注意的几个问题(1)运算符的功能;(2)与运算量的关系a.求运算量的个数b.求运算量的类型(3)运算符的优先级别(4)运算符的结合性(也称结合方向)(5)运算结果的类型单目运算++,--,&,-双目运算+,-,*,%三目运算?:2.3.2优先级与结合性C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。因此,在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算还是自右向左进行运算。例:a*b/c左右++,--,&右左2.3运算符与表达式
2.3.3
算术运算符与算术表达式(1)C语言的基本算术运算符:
加法+减法-乘法*
除法/求余%其中:求余%运算要求两个运算量均为int
当“/”被用于整数或字符时,结果取整
例如:5/2结果=2,1/2的结果=0(2)自增,自减运算符自增运算符:++其功能是使变量的值自增1。自减运算符:--其功能是使变量值自减1。2.3运算符与表达式
++,--运算符为单目运算,要求运算对象只能是变量结合方向:为由右至左。优先级:高于双目运算2.3运算符与表达式
可有以下几种形式: ++i变量i自增1后再参与其它运算。 i++变量i参与运算后,i的值再自增1。--i变量i自减1后再参与其它运算。 i--变量i参与运算后,i的值再自减1。2.3运算符与表达式
例2-3:main(){intx,y;x=10;y=++x;printf(“%d,%d”,x,y);}程序运行后,输出结是:11,11如果将程序的第2行改为:x=10;y=x++;结果如何?因此,关键在于区别变量是先参与运算,还是先使用变量自增(自减)
12.3运算符与表达式
2.3.3算术表达式定义:由算术运算符、括弧、内部函数及数据组成的式子需要掌握的书写原则:(1)表达式中的所有运算符和操作数必须并排书写。不能出现上下标(如x2,x2等)和数学中的分数线。(2)在C表达式中不能省略乘号(如2ab、xy等)。(3)要注意各种运算符的优先级别,为保持运算顺序,在写C表达式时需要适当添加括号(),若要用到库函数,必须按库函数要求书写。
2.3.4关系运算符与关系表达式关系运算符及优先级别比较两个量的运算符称为关系运算符。在C语言中有以下关系运算符:
<,<=,>,>=,==
,!=
关系运算符的优先级:
(1)
>、>=、<、<=优先级相等,==、!=优先级相等,前者高于后者。
(2)算术运算符>
关系运算符>
赋值运算符
2.3运算符与表达式
2.3.4关系运算符与关系表达式2.3运算符与表达式
关系表达式的一般形式为:
表达式关系运算符表达式
关系表达式的值是:关系成立为“真”,不成立则为“假”
C语言中用“1”表示“真”“0”表示“假”例如:a+b>c-dx>3/2‘a’+1<c-i-5*j==k+1都是合法的关系表达式。由于表达式中也可以包含关系表达式。因此出现嵌套的情况,例如:当a=5,b=4,c=3时
a<(b>c) a!=(c==b)
又如:
(a=3)>(b=5)由于3>5不成立,故其值为0。又如:当a=5,b=4时
a+=3<b------------假(0)------------真(1)------------假(0)------------62.3运算符与表达式
2.3.5逻辑运算符与逻辑表达式
2.3运算符与表达式
C语言中提供了三种逻辑运算符!非运算&&与运算||或运算运算符&&和或运算符||均为双目运算符,具有左结合性。非运算符!为单目运算符,具有右结合性
(1)逻辑运算符优先级表示如下:!>&&>||而且:&&,||低于关系运算符!高于算术运算符
!(非)(高)算术运算符关系运算符&&和||赋值运算符(低)
2.3运算符与表达式
按照运算符的优先顺序可以得出:
a>b&&c>d(a>b)&&(c>d)
!b==c||d<a((!b)==c)||(d<a)a+b>c&&x+y<b((a+b)>c)&&((x+y)<b)(2)逻辑运算的值:
逻辑运算的值也为“真”和“假”两种,用“1”和“0”来表示。
(3)关于逻辑运算的说明
表达式a&&b&&c
的求解过程只有a为真时,才判别b的值;只有a和b均为真时,才判别c的值。只要a为假,就不再判别b和c的值,直接求得表达式的值为假2.3运算符与表达式
表达式a||b||c的求解过程
只要a为真,就不再判别b和c的值,直接求得表达式的值为真。只有a为假时,才判别b的值;只有a和b均为假时,才判别c的值
2.3运算符与表达式
2.3.6赋值运算符与赋值表达式
1.简单赋值运算符与表达式
其一般形式为:变量=表达式
功能:计算表达式的值再赋予左边的变量。整个赋值表达式的值为:左边变量的值
例如:x=a+b
w=sin(a)+sin(b)赋值运算符的结合方向:由右至左因此a=b=c=5可理解为:a=(b=(c=5))
优先级:低于条件运算符?:,高于逗号运算符
,2.3运算符与表达式
赋值表达式定义:在赋值表达式的未尾加上分号,就构成为赋值语句
说明:如果赋值运算符两边的数据类型不相同,系统将自动进行类型转换,即把赋值号右边的类型换成左边的类型。
具体转换规定如下:1)实型赋予整型,舍去小数部分。2)整型赋予实型,数值不变,但将以浮点形式存放,即增加小数部分(小数部分的值为0)。3)字符型赋予整型,由于字符型为一个字节,整型为二个字节,故将字符的ASCII码值放到整型量的低八位中,高八位为0。4)整型赋予字符型,只把低八位赋予字符量。2.3运算符与表达式
例2-4用程序验证不同类型变量的赋值的类型转换。voidmain(){inta,b,c=322;/*(322=101000010)floatx,y=3.14;charch1='a',ch2;a=y;x=c;b=ch1;ch2=c;printf("%d,%f,%d,%c",a,x,b,ch2);}程序运行结果是:
2.3运算符与表达式
a=3,x=322.000000,b=97,ch2=662.复合赋值运算符与表达式
在赋值符“=”之前加上其它二目运算符可构成复合赋值符。如:+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=2.3运算符与表达式
构成复合赋值表达式的一般形式为:
变量双目运算符=表达式它等效于:
变量=变量运算符表达式
优先级别:仅高于逗号(,)运算符例如:
a+=5
等价于a=a+5
x*=y+7
等价于x=x*(y+7)
r%=p
等价于r=r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中医药知识培训
- 车辆检修工知识培训课件
- 春节购房 壮志凌云
- 春分市场突围
- 《霸王别姬》电影分享
- 工作移交管理制度
- 2025年度教育信息化平台建设与运营正规购销合同3篇
- 酒水品鉴知识培训课件
- 人大业务知识培训课件
- 二零二五年度互联网应用软件许可使用合同
- 《论拒不执行判决、裁定罪“执行能力”之认定》
- 工业设计基础知识单选题100道及答案解析
- 山西省晋中市2023-2024学年高一上学期期末考试 化学 含解析
- 过程审核表(产品组评分矩阵评审提问表(评分))-2024年百度过
- 操作手册模板【范本模板】
- 2025年湖北省武汉市高考数学模拟试卷附答案解析
- 【工作总结】建筑中级职称专业技术工作总结
- 江苏省2022年普通高中学业水平合格性考试数学试题(考试版)
- 2023年二轮复习解答题专题三:一次函数的应用方案选取型(原卷版+解析)
- 2024版小学英语新课程标准测试题及答案
- 2024年村级意识形态工作计划
评论
0/150
提交评论