




已阅读5页,还剩53页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络信息中心教研室 第 2 章 数据类型、运算符与表达式 主要内容 2.2 标识符 2.3 常 量 2.4 变 量 2.5 数据间的混合运算 2.6 变量赋初值 2.1 C语言的数据类型 2.7 运算符和表达式 2网络信息中心教研室 1.5 C语言的运行与调试 1 1 C语言的数据类型 2 2 基本数据类型在两种环境下的表示 3网络信息中心教研室 v一个程序应包含两个方面,即数据结构和算法: (1) 为了方便对程序中的数据进行存储和运算,每 个数据都要有指定的数据类型和组织形式,叫 做数据结构。数据类型是按被定义变量的性质 、表示形式、占据存储空间及构造特点进行划 分,不同类型数据的数据表示形式、取值范围 、占用内存空间的大小及可参与的运算种类也 不同; (2) 算法是指对操作的描述,一般会给出解决问题 的操作步骤。 2.1 C语言的数据类型 4网络信息中心教研室 2.1.1 基本数据类型简介 v基本数据类型 C语言中,数据类型可分为:基本类型、构造类型 、指针类型和空类型4大类,如下图2-1所示。 空类型 构造类型 数组类型 结构体类型 共用体类型 整型 基本类型 字符型 实型(浮点型) 枚举类型 单精度型 双精度型 指针类型 数据类型 5网络信息中心教研室 v标识符 除了常量的直接使用方式以外,其它方式均 要求这些数据有一个名字与之匹配,这个名字 就是标识符。 C语言中,变量名、符号常量、函数名、数组名 、类型名、文件名等字符序列称为标识符。 v可用于标识符的字符集 C语言规定标识符只能由字母、数字和 下画线3种字符组成,且第1个字符不允许 为数字. 2.2 标识符 6网络信息中心教研室 2.2 标识符 1 1 可用于标识符的字符集 1 1 可用于标识符的字符集 2 2 标识符的分类 7网络信息中心教研室 2.2.1 C语言的字符集 C语言的字符集分以下几类。 v英文大写或小写字母:AZ,az; v数字:1、2、3、9 v特殊符号:+、-、*、/、%、=、_、!、(、 )、#、$、 x=012; y=-0177777; printf(“x=%d,y=%dn“,x,y); 16网络信息中心教研室 2.3 常量 十六进制整数的前缀为0x或0X,其数码取 值范围为09,AF,af。 以下是合法的十六进制整数: 0X12(十进制数18),-0x12(十进制数-18), 0XA1,0Xffff(十进制数为65535) 以下各数不是合法的十六进制整数: 6B(无前缀0x),0x5H(含有非法数码H) 在整型数据的后边加上后缀“L”或“l”(小写字母l)来 表示的该数据是一个长整型的数据。例如: 589L十进制 012L八进制 0X17L十六进制 十六进制整数3 17网络信息中心教研室 2.3.2 实型常量 实型常量也称为浮点型。 有两种形式: 十进制小数形式和指数形式。 十进制小数形式:由数码09和小数点组成 。如下均为合法的实数: 0.12,1.23,-2.5145,125.0 指数形式:,由十进制数,加上阶码标志 “e”或“E”及阶码(只能为整数,可以带符 号)组成。 如:指数值1.2E6等于 1.2106 5.21E-2等于 5.2110-2 0.91E8等于 0.91108 -1.8E-9等于 -1.810-9 18网络信息中心教研室 2.3.3 字符常量 字符常量是用西文半角单引号括起来 的一个字符。 在C语言中,字符常量有以下特点: (1) 字符常量只能用单引号“”括起来,不能 用双引号或括号。 (2) 字符常量只能是单个字符,不能是字符 串。 (3) 字符可以是字符集中任意字符,但数字 被定义为字符型之后就不能参与数值运算 。 19网络信息中心教研室 2.3.3 字符常量 除了以上形式的 字符常量外,C语言 还允许使用一种特殊 形式的字符常量,即 转义字符,它以一个 反斜线“”开头,后跟 一个或几个字符的字 符序列 。 转义字符 转义字符的 意义 ASCII代码 n 换行 10 t水平制表 9 b退格 8 r回车 13 f换页 12 反斜线符 92 单引号符 39 ”双引号符 34 ddd13位八进 制数 xhh12位十六 进制数 20网络信息中心教研室 2.3.3 字符常量 【例2-2】输出转义字符。 【程序分析与解答】 #include /*visual C+ 6.0 */ main() printf(“abctderftgn“); printf(“1234567812345678n“);/*参照物*/ printf (“htibbjk“); printf(“1234567812345678n“);/*参照物*/ 输出结果为: fgde 1234567812345678 hjk 1234567812345678 Press any key to continue 21网络信息中心教研室 2.3.4 字符串常量 字符串常量是由一对双引号括起的字符序列。 例如,“211 Project”,“Chinese”,“college”等 都是合法的字符串常量。 字符串常量和字符常量的数据结构不同,其主 要区别如下: (1) 字符常量由单引号括起来,字符串常量由双引 号 括起来; (2) 字符常量只能是单个字符,字符串常量含一个 或多个字符。 22网络信息中心教研室 2.3.4 字符串常量 C在内存中占一个字节,表示为: “C”在内存中占两个字节,表示为: 可以把一个字符常量赋予一个字符变量,但 是不能把一个字符串常量赋予一个字符量。 字符串常量占的内存字节数等于字符串半角 字符数加1,因为在增加的一个字节中存放字符 “0”(ASCII码值为0),这是字符串结束的标志 。 C C0 23网络信息中心教研室 2.3.5 符号常量与预处理 在C语言中,可以用一个标识符来表示一个 常量,称为符号常量。 符号常量在使用之前必须先定义,其一般形式为 : #define 标识符 常量 其中,#include也是一条预处理命令(预处 理命令都以“#”开头),称为宏定义命令,其功 能是把该标识符定义为常量。一经定义,以后 程序中所有的标识符都代表该常量,如果要修 改这个常量,可以实现整个程序中“一改全改”。 经常将符号常量的标识符用大写字母,变量 标识符用小写字母,以示区别。 24网络信息中心教研室 2.4 变量 1 1 整型变量 2 2 实型变量 3 3 字符变量 25网络信息中心教研室 变量是指在程序执行过程中可以被改 变和赋值的量。程序中每一个变量有一个 符合C语言标识符规范的名称,在内存中 占据一定的存储单元。变量的使用方法是 先声明(定义变量),后使用。 变量名与变量值是有区别的,变量的“ 名”是指变量所代表的存储单元的标志, 而“值”是指存储单元的内容.例: 2.4 变量 A _变量 变量值3 26网络信息中心教研室 2.4.1 整型变量 如: short int x; /*变量的声明,定义整型变量*/ x=10; /*变量赋值*/ 000000000000101 0 变量x在内存中的地址是0x0013ff70 数据在内存中的二进制存储示意 图 (1) 基本型:类型说明符为int,在内存中占4个字节。 (2) 短整型:类型说明符为short int或short,占2个字节。 (3) 长整型:类型说明符为long int或long,4个字节。 (4) 无符号型:类型说明符为unsigned,。 无符号型又可与上述三种类型匹配而构成,不能表示负 数: 整型数据在内存中的存储形式 1 整型变量的分类2 27网络信息中心教研室 2.4.1 整型变量 【例2-3】测试当前C编译环境下数据类型占用的字节数。 【程序分析与解答】 #include main() printf(“int占%d字节。n”,sizeof(int); printf(“long int占%d字节。n”,sizeof(long int); printf(“short int占%d字节。n”,sizeof(short int); printf(“unsigned int占%d字节。n”,sizeof(unsigned int); printf(“unsigned long int占%d字节。n”,sizeof(unsigned long int); printf(“unsigned short int占%d字节。n”,sizeof(unsigned short int); 输出结果为: int占4字节。 long int占4字节。 short int占2字节。 unsigned int占4字节。 unsigned long int占4字节。 unsigned short int占2字节。 28网络信息中心教研室 2.4.1 整型变量 变量定义的一般形式为: 类型说明符 变量名标识符1,变量名标识符2 ,; 例如: int x,y,z; /*x,y,z为整型变量*/ long int n,m;/*n,m为长整型变量,long int 可简写为long */ unsigned int a,b; /*a,b为无符号整型变量, unsigned int 可简写为unsigned*/ 注意: (1)允许在一次定义相同 类型的多个变量 (2)最后一个变量名之 后必须以分号结尾。 整型变量的定义3 29网络信息中心教研室 2.4.2 实型变量 实型数据一般占用4个字节(32位)的内存空间,按 指数形式存储。例如,实数12.345在内存中的存储形式如 图2-4所示: 图2-4 实型数据的表示 +/-, 用0,1表示(数符) 0.12345 +/-, 用0,1表示(阶符) 2 实型数据在内存中的存放形式1 30网络信息中心教研室 2.4.2 实型变量 实型变量分为单精度(float型),长单精度型 (long float),双精度(double型)和长双精度 (long double型)4类,其中float型占用4个字 节,其它数据类型均占用8个字节。 由于实型变量由有限的存储单元组成,因 此能提供的数字是有限的,而在有效位以外的 数字将被舍去。这样可能会产生一些误差,例 如,a+20的显然就应该比a大。请分析下面的 程序。 实型变量数据的分类 2 实型数据的舍入误差 3 31网络信息中心教研室 2.4.2 实型变量 【例2-4】实型数据的舍入误差。 【程序分析与解答】 #include main() float a,b; a=123456.789e5; /*12345678900*/ b=a+20; printf(“%fn“,b); 输出结果为: 12345678868.000000 32网络信息中心教研室 2.4.3 字符变量 字符变量用来存储字符常量,其说明符是 char. 字符变量的赋值有如下方式: (1) 若ch_a是一个字符变量,ch=ch_a; (2) 将字符常量a赋值给ch,ch=a; (3) 将某个字符的ASCII码赋给ch,ch=65,则ch的 内 容为A,但由于整型变量在存储上均超过1 个字节,如果将一个整型变量赋值给一个字符 变量时,只会将其最低8个位赋值给ch。 而ch=“A“则是错误的. 如下字符变量的输出 形式: (1)printf(“%c“,ch); (2) printf(“%d“,ch); (3) putchar(ch); 33网络信息中心教研室 2.5 数据间的混合运算 1 1 各数据类型转换规则 2 2 自动类型转换与强制转换 34网络信息中心教研室 v不同数据类型转换规则 整型、单精度型、双精度型数据可以混合运算。字 符型数据可以与整型通用,因此,整型、实型(包括单、 双精度)、字符型数据间可以混合运算。在进行运算时, 不同类型的数据要先转换成同一类型, 然后进行运算。 转换的规则按图所示 2.5.1 各数据类型转换规则 double float long unsigned int char, short 35网络信息中心教研室 2.5.2 自动类型转换与强制转换 变量的数据类型的转换方法有两种,一种是 自动转换,一种是强制转换。 自动转换遵循以下规则: v若参与运算量的类型不同,则先转换成同一类 型,然后进行运算。 v转换按照数据长度增加的方向进行,以保证运 算精度不降低。 v所有的浮点运算都是以双精度进行的。 vchar型和short型运算时,必须先转换成int型。 v赋值运算中,赋值号两边的数据类型不同时, 赋值号右边量的类型将转换为左边量的类型。 自动类型转换1 36网络信息中心教研室 2.5 数据间的混合运算 其一般形式为: (类型说明符)(表达式) 例如: (float) a /*把a转换为实型*/ (int)(x+y) /*把x+y的结果转换为整型*/ 无论是强制转换或是自动转换,都只是为了 本次运算的需要而对变量的数据长度进行的临 时性转换,而不改变数据说明时对该变量定义 的类型。 强制转换 2 37网络信息中心教研室 2.5.2 自动类型转换与强制转换 【例2-5】数据类型的强制转换。 【程序分析与解答】 #include main() float f=5.75; printf(“(int)f=%d,f=%fn“,(int)f,f); 输出结果为: (int)f=5,f=5.750000 38网络信息中心教研室 v变量预先设置初值可以有如下几种情况: (1)对各变量分别赋初值 int a=3; float pi=3.14159; char cha; (2)定义变量时对部分变量赋值 int a,b,c=5; (3)对几个变量赋相同的初值 如:若对几个变量赋予初值3,应写成 int a=3,b=3,c3; 2.6 变量赋初值 39网络信息中心教研室 2.6 变量赋初值 强制类型转换运算符 () 自增、自减运算符 如: +i,-i (在变量i使用之前,先使i的值加(减)1) i+,i- (在变量i使用之后,使i的值加(减)1)使 用自增、自减运算符需要注意的若干问题: v+或-运算符,只能用于变量,而不能用于常量 或表达式。 v+和-的结合方向是“自右至左”。 40网络信息中心教研室 2.7 运算符和表达式 1 1 C语言运算符简介与表达式的类型 2 2 表达式的求值规则 3 3 算术运算符和算术表达式 4 4 赋值运算符和赋值表达式 5 5 逗号运算符和逗号表达式 6 6 关系运算符和关系表达式 7 7 逻辑运算符和逻辑表达式 41网络信息中心教研室 vC的运算符有以下几类: (1) 算术运算符:+ - * / % (2) 关系运算符: = | 算术表达式; 关系表达式; 逻辑表 达式; 条件表达式; 逗号表达式 2.7.1 C语言运算符与表达式的类型 42网络信息中心教研室 2.7.2 表达式的求值规则 这些运算符在C语言中规定了优先级和 结合性,在求值时先按运算符的优先级别 高低次序执行,如果某个运算对象左右两 侧的运算符的优先级别相同,则按规定的 “结合方向”处理,其中算术运算符的结合 方向为“自左至右”,而对于赋值运算符则 采用“自右至左”的结合方向。 有关运算符的优先级别和结合性参看 附录。 43网络信息中心教研室 2.7.3 算术运算符和算术表达式 (1) + (加法运算符,或正值运算符。如3+5、 +3) (2) - (减法运算符,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中国电流互感器测量级线圈市场调查研究报告
- 2025年中国电动布幕项目投资可行性研究报告
- 2025年中国特种稀释剂市场现状分析及前景预测报告
- 2025年中国热阻衬垫项目投资可行性研究报告
- 工勤保安员考试试题及答案
- 古代知县考试试题及答案
- 国家电网考试试题及答案
- 包头叉车考试试题大全及答案
- 惠州数学三年级试卷及答案
- 2025年残疾人权益保护理论与实践考试试题及答案
- 区块链赋能金融提升交易透明度
- 2024年沈阳市三支一扶考试真题
- wps表格考试试题及答案
- 《绝经后出血》课件
- 食品合作商合同协议
- 2025年吉林省四平市梨树县中考二模历史试题(含答案)
- 生物柴油项目申报材料范文模板 (一)
- 私人店铺用工合同协议
- 猪保价合同协议
- 玉石代理销售合同协议
- 山东2025年山东省公共卫生临床中心招聘博士人才60笔试历年参考题库附带答案详解
评论
0/150
提交评论