欢迎来到冰点文库! | 帮助中心 分享价值,成长自我!
冰点文库
全部分类
  • 临时分类>
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • ImageVerifierCode 换一换
    首页 冰点文库 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

    第二章 基本数据类型运算符与表达式.docx

    • 资源ID:15110678       资源大小:55.19KB        全文页数:22页
    • 资源格式: DOCX        下载积分:3金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要3金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第二章 基本数据类型运算符与表达式.docx

    1、第二章 基本数据类型运算符与表达式第二章 基本数据类型、运算符与表达式一、C语言的数据类型:1、所谓数据类型是按被定义变量的性质、表示形式、占据存储空间的多少、构造特点来划分的。2、种类: (1)基本数据类型(编译系统已定义的类型):它的值不可以再分解为其他类型。 (2)构造数据类型(用户自定义的类型):根据已定义的一个或多个数据类型构造出来的;构造数据类型主要有数组类型、结构体类型和共用体(联合)类型。 (3)指针类型:用来表示某个变量在内存储器中的存放地址,其类型说明符为“*”。 (4)空类型(用途):一是在调用函数值时,用做函数的返回类型。二是用做指针的基本类型,描述一个可以指向任何数据

    2、的指针。其类型说明符为void。二、常量、变量和标识符:1、常量: (1)常量,即其值不发生改变的量。(2)常量可与数据类型结合起来分类。(整型常量:25、0、7,实型常量:5.6、,字符常量有a、b) (3)可以不经说明而直接引用的。2、标识符: (1)用来标识变量名、符号常量名、函数名、数组名、类型名、文件名的有效字符序列。 (2)用一个标识符来表示一个常量,称之为符号常量。 (3)符号常量在使用之前必须先定义,其一般形式为:#define 标识符 常量#define也是一条预处理命令(预处理命令都以“#”开头),称为宏定义命令。其功能是把该标识符定义为其后的常量值。一经定义,以后在程序中

    3、所有出现该标识符的地 方均代之以该常量值。一般习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。3、变量: (1)变量,即其值可以改变的量。 (2)一个变量应该有一个名称,在内存中占据一定的存储单元。 (3)变量在使用之前必须进行定义:即为每个变量取一个名称(变量名),同时规定它的数据类型,以便编译时根据数据类型分配存储空间。 (4)C语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须是字母或者下划线。(5)编译系统区分大小写,将它们认为是两个不同的字符。一般习惯上符号常量的标识符用大写字母,变量标识符用小写字母,以示区别。(6)ANSI C标准没有规定变量名

    4、(标识符)的长度(字符个数),变量名的有效长度依赖于各计算机操作系统和所使用的C语言编译程序。假设:变量名的有效长度为32个字符,如果变量名长度大于32个字符,则只有前面32个字符有效,后面不被识别。 (7)变量定义一般放在函数体的开头部分(即主函数里,函数之外)。 (8)变量名实际上就是以一个名称对应,代表一个地址。在对程序编译连接时,由编译系统给每个变量名分配对应的内存地址。 (9)每个变量在定义时必须指定其数据类型,以便在编译时为其分配相应大小的存储单元。 (10)%为求余运算符,即求得两个数据相除后余数的值(求余运算只能在整型变量之间进行)。4、变量赋初值: (1)在变量定义的同时给变

    5、量赋以初值的方法,这种方法称为初始化。 (2)一般形式: 类型说明符 变量1=值1,变量2=值2,; (3)可以使被定义的变量的一部分赋初值。例如:float b,c,d=7.9; 只对d初始化。 (4)如果对几个变量赋予相同的初值,应写为:int e=50,f=50,g=50;语句指定e、f、g为整型变量,初值均为50,但不能写成:int e=f=g=50。 (5)应注意,初始化不是在编译阶段完成的(只有静态存储变量和外部变量的初始化是在编译阶段完成的),而是在程序运行时执行本函数时赋初值的,相当于有一个赋值语句。int x=56;相当于以下两句语句:int x; x=56; 5、变量的地址

    6、: (1)在定义了一个变量后,在内存中会分配相应的存储单元,将变量的值存储到该单元中。 (2)内存是以字节为单位的连续存储空间,每个内存单元都有一个唯一的编号,这就是“内存地址”,根据内存地址可以准确找到相应的内存单元。而在地址所标志的内存单元中存放数据,就是内存单元的内容。 (3)Turbo C中int型占据2个字节的内存单元;float型占据4个字节的内存单元;char型占据1个字节的内存单元。 (4)通常把变量所占存储空间中的首字节地址称为变量地址。 (5)CPU并不直接识别变量的名称,但它知道各变量在内存的地址,在机器内部对变量值的存取时通过各自的地址进行的。 (6)变量名实际上是一个

    7、符号地址,它指出变量在内存中存放的位置,而变量值就是相应内存单元中存放的数据。三、简单数据类型与表示范围: 1、整形数据: 1、整型常量的表示方法: (1)整型常量就是整常数。 (2)在C语言中,经常使用的整常数有3种进制,它们分别是八进制、十进制和十六进制。 (3)八进制前缀为“0”,十六进制前缀为“0x或者0X”其数码取值为09、AF或af,十进制无前缀。 (4)整型常数的后缀:基本整型的长度为16位,十进制无符号整形常数的范围为065535,有符号数为.八进制无符号数的表示范围为00(代表八进制)177777。十六进制无符号数的表示范围为0X00XFFFF或0x00xffff。 (5)如

    8、果使用的数超过了上述范围,就必须加上后缀“L”或“l”,变为长整型数来表示。 (6)长整型数567L和基本整常数567在数值上并无区别,但是所占存储空间大小不同。对567L而言,因为是长整型量,编译系统将为它分配四个字节存储空间。而对567,因是基本整型,则只分配2个字节的存储空间。 (7)无符号数也可用后缀表示,整型常数的无符号数的后缀为“U”或“u”。2.整型变量: (1)整形数据在内存中的存放形式:数据在计算机内存中是以二进制形式存放的。 (2)整型的分类: 基本整型:int 内存中占2B。 短整型: short int或short。所占字节和取值范围均与基本型相同。 长整型: long

    9、 int或long。在内存中占4个字节。 有符号型: signed; 无符号说明符:unsigned (3)当不指定为无符号或者指定为有符号时,为有符号型,存储单元最高位代表符号位(最高位为0表示正数,为1代表负数);如指定为无符号型,则省去了符号位,全部存储单元二进制位(bit)用于存放数据。 (4)整型变量的定义。变量定义的格式为: 类型说明符 变量名标识符,变量名标识符,; 说明: 允许在一个类型说明符后定义多个相同类型的变量,并使用逗号分隔变量名中多个变量,使用分号结束。类型说明符与变量名之间至少用一个空格间隔。 类型说明符用于指定变量的数据类型。 变量定义必须放在变量使用之前。一般放

    10、在函数体的开头部分。 在程序的同一部分,禁止对同一变量进行重复定义,在定义不同种类型变量时,避免将其都写在同一行上。 对所用到的变量必须进行强制定义,即“先定义,后使用”。 (5)注意: 不同类型的量可以参与运算,并赋值。其中的数据类型转换是由编译系统自动完成的。且长整型数据的输出格式为%ld。 (6)整形数据的溢出:每个整形数据都有其自身的数据类型,有其自身所占存储空间大小。3、实型数据: 1、实型数据表示方法: (1)实型也称为浮点型。实型数据也称为实数或者浮点数。实数有两种形式:十进制小数形式和指数形式。 (2)十进制数形式:由数字09和小数点组成。注意,必须有小数点,且小数点的前面或后

    11、面必须有数字。 (3)指数形式:由十进制数(基数)、加阶码标志“e”或“E”以及指数(即阶码,只能为整数,可以带符号)组成。(4)一般形式:a E n(a为十进制数基数,n为十进制整数阶码)其值为:a (5)注意: 阶码标志e(或E)之前必须有数字,且e后的指数必须为整数。非法的e3、2.7e3.5 后缀为“f”或“F”即表示该数为浮点型。例如:356f与356.是等价的(参照十进制形式)。 规范化的指数形式:在字母e(或E)之前的小数部分中,小数点左边有且仅有一位非零数字。2、实型数据在内存中的存放形式: (1)实型数据一般占4B(32位)内存空间。 (2)实型数据按指数形式存储:系统把一个

    12、实型数据分为小数部分和指数部分分别存放。 (3)计算机中是用二进制来表示小数部分,以及用2的幂次来表示指数部分。对于4B中,究竟多少位来表示小数部分,多少位来表示指数部分,标准中并未规定。小数部分占的位数越多,数的有效数字越多,精度越高。指数部分占的位数越多,则能表示的数值范围越大。 3、实型变量的分类:(1)实型变量分为单精度(float型)、双精度(double型)和长双精度(long double型)。(2)单精度4B,双精度8B,长双精度16B。(3)单精度的有效数字是67(取)位,双精度的是1516(取)位,长双精度的是18(取)19位。在有效位数之外的数字将会被舍去,因此可能会产生

    13、一些误差。(4)“%f”是输出实数的制定格式,其作用是指该实数以小数形式输出。(5)规定:小数后最多保留6位。(6)实型常数不分单、双精度,都按双精度(double)型处理。例如:a=3.14159*7.1617 编译系统先将该两数作为双精度数进行相乘运算,得到的结果也是双精度的,然后取前7位有效数字赋值给实型变量a。4、字符型数据和字符串常量: 1、字符常量: (1)字符常量是用一对单引号括起来的一个字符,字符常量区分大小写。 (2)字符常量只能用单引号括起来;字符常量只能是单个字符,不能是字符串。 (3)字符可以是字符集中除了单引号本身,双引号,反斜杠外的任意字符。 (4)数字被定义为字符

    14、型之后不能参与数值运算。 2、转义字符: (1)转义字符以反斜杠“”开头,后跟一个或几个字符。转义字符具有特定的含义,不同于字符的原意,故称“转义”字符。 (2)转义字符用反斜杠将其后面的字符转换为另外的意义,主要用来表示那些用一般字符不便于表示的控制代码,它们在屏幕上无法显示。补充:一个制表符占8列,下一制表符位置从第9开始。 (3)简单转义字符及其含义:转义字符意义ASCII转义字符意义ASCII响铃7反斜线符“”92回车换行10单引号符39横向跳到下一制表位置9双引号符34退格8鸣铃7回车(不换行)13八进制走纸换页12十六进制 3、字符变量: (1)字符变量用来存储字符常量,它只能存放

    15、一个字符。 (2)字符变量的说明符是char。 4、在内存中的存储形式: (1)每个字符变量被分配一个字节的内存空间,字符型数据在存储时,并不是把该字符本身放到内存单元中,而把该字符的ASCII码制存放在变量的内存单元之中。 (2)C语言允许对整型变量赋以字符值,也允许对字符变量赋以整型值。 (3)整型量为二字节量,字符量为单字节量,当整型量按字符型量处理时,只有低8位字节参与处理。 (4)当格式符为“%c”时,对应输出的变量值为字符,当格式符为“%d”时,对应输出的变量值为整数。 5、字符串常量: (1)字符常量是用一对单引号括起来的一个字符,而字符串常量则是由一对双引号括起来的字符序列。

    16、(2)字符串常量和字符常量的区别: 外形不同:单双引号的区分。 内容不同:字符常量只能是单个字符,字符串常量则可以含一个或多个字符。 单向赋值:可以把一个字符常量赋予一个字符变量,但不能把一个字符串常量赋予一个字符变量。 空间不同:字符常量占一个字节的内存空间,字符串常量占的内存字节数等于字符串中字节数加1。末尾增加的一个字节用于存放字符串结束的标志字符“”(ANSCII码为0) (3)最后一个字符为,在输出时是不会输出的。注意在书写程序时不必加, 是系统自动加上去的。5、各数据类型间的混合运算: (1)不同类型的数据类型在一起运算时,需要转换为相同的数据类型,然后进行运算。 (2)转换的方式

    17、采用自动类型转换,也称为隐式转换。 (3)自动类型转换是指系统根据规则,自动将不同数据类型的运算对象转换成同一数据类型的过程。 (4)转换的原则就是为了两个运算对象的结果尽可能提供多的存储空间。 (5)当运算符两端的运算对象的数据类型不一致时,在运算前先将类型等级较低的数据转换成等级较高的数据保值转换。(即:都转换成双精度的数据) (6)数据类型不需要逐级转换,可直接转换。 (7)自动类型转换只针对两个运算对象,不能对表达式的所有运算对象做一次性的自动类型转换。 (8)例:“6/4+6.7”的计算结果为7.7,而表达式6.0/4+6.7的计算结果为8.2,原因就在于6/4按整型计算结果为1,再

    18、加上6.7得整个表达式的结果为7.7。6、数据的简单输出: (1)在C语言中,所有的数据输入/输出都是由库函数来完成的。 (2)stdio是standard&output的英文缩写,其意思是标准输入/输出。 (3)常用的格式输出函数是printf函数,其关键字最末一个字母f即为“格式”(format)之意。其功能是按用户指定的格式,把指定的数据显示到显示屏幕上去。 (4)printf函数调用的一般形式为: Printf(“格式控制字符串”,输出列表) (5)“格式控制字符串”用于指定输出格式。“格式控制字符串”可由格式字符串和非格式字符串组成。 (6)格式字符串是以%开头的字符串,在“%”后面

    19、跟有各种格式字符,以说明输出格式数据的类型、形式、长度、小数位数等。“%d”十进制整型输出 ”%ld”十进制长整型输出”%c”字符型输出 ”%f”按小数形式输出单、双精度实数“%u”无符号位 (7)非格式字符串在输出时原样照印,在显示中起提示作用。 (8)输出表列中给出了各个输出项,要求格式字符串和各输出项在数量和类型上应该一一对应。四、C语言的运算符与表达式1、C语言运算符简介:1、运算符:(1)按运算符在表达式中的作用,C语言的运算符可分为算术运算符、赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、逗号运算符及一些特殊的运算符。(2)按运算符与运算对象(操作数)的关系可将C语言的

    20、运算符分为:单目运算符(一个操作数,如:!、+等)、双目运算符(两个,如:+、*)和三目运算符(三个,如:?)。2、表达式:使用运算符和圆括号将操作数连接起来构成的式子。3、简单语句:(1)C语言中,在表达式的末尾加上一个分号“;”就构成了简单语句。(2)在程序设计过程中药避免使用无意义的简单语句。例如,a+b;和3;都是无意义的简单语句。因为它们并没有引起任何存储单元数据的变化。(3)C语言的运算符不仅具有不同的优先级,而且还有一个特点,就是它的结合性。在表达式中,各运算量参与运算的先后顺序不仅要遵守运算符优先级别的规定,还要受运算符结合性的制约,以便确定是自左向右进行运算,还是自右向左进行

    21、运算。(4)分类: 算术运算符(用于各类数值运算):加、减、乘、除、求余、自增、自减。 关系运算符(用于比较运算):大于、小于、等于(=)、大于等于(=),小于等于(=)和不等于(!)。 逻辑运算符(用于逻辑运算):与(&)、或(|)、非(!)。 位操作运算符(参与运算的量按二进制位进行运算):位与(&)、位或(|)、位非()、位异或()、左移()。 赋值运算符(用于赋值运算):分为简单赋值(=)、复合算数赋值(,、*、/=、%=)和复合位运算赋值(&=、|=、=、=、=)。 条件运算符(三目运算符,用于条件求值):“?”、“:”。 逗号运算符:用于把若干个表达式组合成一个表达式(,)。 指针

    22、运算符:用于取内容(*)和取地址(&)两种运算符。 求字节运算符:用于计算数据类型所占的字节数(sizeof)。 强制类型转换运算符:强制进行数据类型转换“(类型)”。 分量运算符:用于存取结构和联合中的成员()其优先级在所有运算符中式最高的。 下标运算符:用于数组下标的表示( )。 其他运算符:如函数调用运算符“()”。2、赋值运算符和赋值表达式:1、赋值运算符: (1)赋值就是将一个数据存储到一个变量中。 (2)赋值的对象只能是变量,而这个数据既可以是常量,也可以是变量、还可以是有确定值的表达式。 2、赋值表达式: (1)由赋值运算符“”将一个变量和表达式连接的式子称为赋值表达式。 (2)

    23、一般形式:变量=表达式 (3)功能:将赋值符右侧的“表达式”的值赋给左边的变量。(4)在赋值运算符的左边的量必须是变量,不能是常量或用运算符结合起来的表达式。(5)赋值运算符左侧的标识符称为“左值”。并不是任何的对象都可以作为左值的,变量可以作为左值,而表达式”x+y”就不能作为左值,常变量也不能作为左值,因为常变量不能被赋值。出现在赋值符右侧的表达式称为“右值”。显然左值可以出现在赋值运算符的右侧,因而凡是左值都可以作为右值。(6)赋值表达式也应该有值,它的值就是被赋值的变量的值,其结果类型由赋值运算符“左值”的类型决定。如赋值表达式“右值”的类型与“左值”的类型不一致,则需要“右值”的类型

    24、转换为“左值”的类型。(7)符赋值运算符具有右结合性赋值运算,可以连续进行。如:a=b=c=5中有3个赋值运算符,按照赋值运算符的结合性自右至左,这个表达式可以理解为a=(b=(c=5)。其赋值过程就是先将5赋给变量c,再把c的值赋给变量b,最后把b的值赋给变量a,最后结果a=b=c=5。(8)赋值运算符的优先级低于算术运算符的优先级。(9)将赋值表达式作为表达式的一种,不仅可以出现在赋值语句中,而且可以出现在其他语句(输出语句,循环语句)中。例如:printf(“%d”,x=y);如y的值是5,则输出x的值为5,在一个语句中完成了赋值和输出两种功能。3、类型转换:(计算机中都是以补码的形式存

    25、放的) 1、如果赋值运算符两边的数据类型不同,系统将自动进行转换,即把赋值号右边的类型转成左边的类型。2、规定: (1)整型数与实型数之间的转换。 将实型数据(单、双精度)赋予整型变量时,舍去实型数据的小数部分,以整形式存储在内存中。 将整形数据赋给实型(单、双精度)变量时,数值不变,但以实型数据形式存储在内存中,即增加小数部分(小数部分的值为0)。 (2)实型数据之间的转换: 将一个double型数据赋给float型变量时,截取其前7位有效数字,存放到float型变量的存储单元(32位)中。注意,数值范围不能溢出。 Eg: float a; Double b=123.456789e100;

    26、a=b; 便会出现溢出错误。 将一个float型数据赋给double型变量时,其数值不变,有效位数扩展到16位,在内存中以64位存储。 (3)整型数与字符型数之间的转换: 字符型数据赋给整型变量时,由于字符型只占1B,而整型占2B,故将字符的ASCII码值放到整型量的低8位中,这时有两种情况: 如所用系统将字符型数据处理为无符号型的量或unsigned int型变量赋值,则将字符型数据(8位二进制位)放到整型变量的低8位,高8位补0。 如所用系统将字符型数据处理为带符号型的量,如字符最高位为0,则整型变量高8位补0;如字符最高位为1,则高8位全补1。这称为“符号扩展”。 将一个int、shor

    27、t、long型数据赋给一个char型变量时,只将其低8位原封不动地送到char变量(截断)。字符“#”35 (4)整形数据之间的转换: 如果将带符号的整形数据(int)赋给long型变量时,要进行符号扩展,将整型数的16位送到long型低16位中。如int型数据为正值(符号位为0),则long型变量的高16位补0;如int型变量为负值(符号位为1),则long型变量的高16位补1,以保证数值不改变。 如将一个long型数据赋给一个int型变量,只将long型数据中低16位原封不动地送到int变量(截断)。 (5)无符号整数与其他整数之间的转换: 将一个unsigned int类型数据赋给一个与

    28、其长度相同的整型变量时,将unsigned型变量的内容原样送到非unsigned型变量中,即进行原样复制;但如果数据范围超过相应整型的范围,则会出现数据错误。4、复合赋值运算符: (1)这些运算符把“运算”和“赋值”两个操作结合在一起,作为一个复合运算符来使用,称之为复合赋值运算符。 (2)一般表达式: 变量 双目运算符=表达式 等效于: 变量=变量 运算符 表达式 即将左边的(变量)与右边的(表达式)进行(双目运算符)所规定的运算,然后将值返回给变量。如果表达式中有若干的表达式,则相当于它有括号。5、强制类型转换符: 1、强制类型转换符就是“()”,它是单目运算符,它把表达式的类型强制类型转

    29、换成圆括号中的“数据类型名”所指定的类型。强制类型转换又称为显示转换。 2、一般形式: (类型说明符) (表达式) 3、功能:把表达式中的运算结果强制转换成类型说明符所表示的类型。 4、注意: (1)类型说明符和表达式都必须加括号,单个变量可以不加括号。例如,不要把(int)a ,写成int (a)。(float)(x+y)如写成float x+y,则只是将X转换成实型,再与y相加。 (2)无论是强制转换或是自动转换,都是为了本次运算的需要而对变量的数据长度进行的临时性转换,而不改变数据说明时对该变量定义的类型。6、算术运算符和算术表达式: 1、基本的算术运算符: “+”:加法运算符或正值运算

    30、符时为双目运算符。结合方向:自左至右。 作为正值运算符时为单目运算符。结合方向:自左至右。 “”:减法运算符或负值运算符,作为减法运算符时为双目运算符。结合方向:自左至右。作负值运算符时为单目运算,结合方向。自右至左。 “*”乘法运算符,双目运算。结合方向:自左至右。 “/”除法运算符,双目运算。结合方向:自左至右。参与运算量均为整型时,结果也为整型,舍去小数。如果运算量中有一个是实型,则结果为双精度实型。 2、注意:(1)两整数相除,结果为整数(舍去小数部分)商向下取整。 如果除数或被除数中有一个为负数,则舍入的方向是不固定的。例如,既有的机器上得到的结果为,有的机器上得到结果为。多数机器采

    31、取“向零取整”的方法,即为1,取整后向零靠拢。(2)如参与+、运算的两个数中有一个为实型,则结果为double型,因为实型都按double型处理。(3)取模运算符“%”实际上就是数学运算中的求余运算符,他要求参与运算的两个操作对象均为整型。求余运算的结果等于两数相除后的余数,结果的符号与”%”左边的操作数的符号相同。7、算术表达式和运算符的优先级和结合性: 1、算数表达式是由算数运算符和括号将操作数(或运算对象)连接起来的,符合C语言语法规则的式子。操作数包括:常量、变量、函数等。 2、C语言中,规定了运算符的优先级和结合性,运算符的运算优先级共分为15级。1级最高,15级最低;在表达式中,优先级较高的先于优先级较低的


    注意事项

    本文(第二章 基本数据类型运算符与表达式.docx)为本站会员主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2023 冰点文库 网站版权所有

    经营许可证编号:鄂ICP备19020893号-2


    收起
    展开