




已阅读5页,还剩43页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章 数据类型和 表达式 2.1 数据类型 2.2 常 量 2.3 变 量 2.4 运算符与表达式 数据类型是指定义了一组数据以及定义 在这一组数据的操作,它是程序中最基本的 元素。 C+数据类型十分丰富,大体上可分为基 本类型、空类型、构造类型、指针类型、类 类型五种。如图2-1所示。 数据类型 基本类型 空类型(无值类型) void 构造类型 类类型class 指针类型 整型int 实型(浮点型) 字符型 逻辑型bool 结构类型struct 数组类型 枚举型类型enum 联合型类型union 单精度型float 双精度型double 单字符型char 宽字符型w-char 图2-1 C+数据类型 2.1 数据类型 2.1.1 基本类型 基本数据类型有4种:整型(int)、浮点型(float )、字符型(char)、逻辑型(bool)。 整型数在计算机内部一般采用定点表示法,用于存 储整型量。(如123,-7等),存储整数的位数依机器 的不同而异。 浮点数和整数不同的地方是浮点数采用的是浮点表 示法,也就是说,浮点数的小数点的位置不同,给出的 精度也不相同。 字符类型表示单个字符,一个字符用一个字节存储 。 逻辑类型,也称布尔类型,表示表达式真和假。 2.1.2 空类型void 空类型void用于显示说明一个函数不返回任何值。 还可以说明指向void类型的指针,说明以后,这个指针 就可指向各种不同类型的数据对象。 2.1.3 构造类型 构造类型又称为组合类型,它是由基本类型按照某 种规则组合而成的。 数组:是由具有相同数据类型的元素组成的集合。 结构体:是由不同的数据类型构成的一种混合的数据 结构,构成结构体的成员的数据类型一般不同,并且在 内存中分别占据不同的存储单元。 共用体:是类似于结构体的一种构造类型,与结构体 不同的是构成共同体的数据成员共用同一段内存单元。 枚举:是将变量的值一一列举出来,变量的值只限于 列举出来的值的范围内。 2.1.4 指针类型 指针类型变量用于存储另一变量的地址,而不能用 来存放基本类型的数据。它在内存中占据一个存储单元 。 2.1.5 类类型 类是体现面向对象程序设计的最基本特征,也是体 现C+与C最大的不同之处。类是一个数据类型,它定 义的是一种对象类型,由数据和方法组成,描述了属于 该类型的所有对象的性质。 2.2 常 量 常量是指在程序运行过程中其值不能改 变的量。C+支持5种类型的常量:浮点型、 整型、字符型、布尔型和枚举型。常量在程 序中一般以自身的存在形式体现其值。常量 具有类型属性,类型决定了各种常量在内存 中占据存储空间的大小。 2.2.1 整型常量 整型数据表示通常意义上的整数,整型常量可以 用十进制、八进制或十六进制表示。 1. 十进进制常量 一般占一个机器字长,是一个带正负号的常数( 默认情况下为正数),如+3,-7等。 2. 八进进制常量 由数字0开头,其后由若干07的数字组成,如 0378,0123等。 3. 十六进进制常量 以0x或0X开头,其后由若干09的数字及AF( 或小写af)的字母组成,如0x173,0x3af。 整型常量可以后跟字母l或L表示long型(长整数) ,也可以跟u或U表示unsigned整数(无符号整数), 如以下数是合法的: 375u/无符号整数 12345UL/无符号长整数 54321L/长整数 13579ul/无符号长整数 2.2.2 浮点数常量 浮点数也称为实型数。只能以十进制形式表示。共 有两种表示形式:小数表示法和指数表示法。 1. 小数表示法 使用这种表示形式时,实型常量分为整数部分和小 数部分。其中的一部分可在实际使用时省略,如10.2, .2,2.等。但整数和小数部分不能同时省略。 2. 指数表示法 也称科学记数法,指数部分以E或e开始,而且必 须是整数。如果浮点数采用指数表示法,则E或e的两边 都至少要有一位数。如以下数是合法的: 1.2e20,-3.4e-2。 2.2.3 字符常量与字符串常量 1. 字符常量 C+中的字符常量通常是用单引号括起的一个字符 。在内存中,字符数据以ASCII码存储,如字符a的 ASCII码为97。字符常量包括两类,一类是可显字符, 如字母、数字和一些符号 、+等,另一类是不可显 字符常量,如ASCII码为13的字符表示回车。 2. 转义转义 字符 转义字符是特殊的字符常量,表示时一般以转义字 符开始,后跟不同的字符表示不同的特殊字符,表2- 1列出了常用的特殊字符。 名称符号 空字符(null)0 换行(newline)n 换页(formfeed)f 回车(carriage return)r 退格(backspace)b 响铃(bell)a 水平制表(horizontal tab)t 垂直制表(vertical tab)v 反斜线(backslash) 问号(question mark)? 单引号(single quote) 双引号(double quote)” 表2-1 常用的特殊字符 3. 字符串常量 字符串常量是由一对双引号括起来的零个或多个字 符序列。 字符串可以写在多行上,不过在这种情况下必须用 反斜线表示下一行字符是这一行字符的延续。 字符串常量实际上是一个字符数组,组成数组的字 符除显示给出的外,还包括字符结尾处标识字符串结束 的符号0,所以字符串“abc”实际上包含4个字符:a 、b、c和0。 需要注意的是a和“a”的区别,a是一个字符常量 ,在内存中占一个字节的存储单元,而“a”是一个字符 串常量,在内存中占两个字节,除了存储a以外,还要 存储字符串结尾符0。 2.2.4 布尔常量 布尔常量仅有两个:false(假)和true(真)。 2.2.5 枚举常量 枚举常量可以通过建立枚举类型来定义。 枚举类型是一种用户自定义数据类型。在声明枚举 类型时,需要把常量的值一一列举出来,形式如下: enum 枚举类型名 常量值1 ,常量值2 ,常量值n; 例如声明一个名为color的枚举类型: enum colorRed,Green,Blue,White,Black; 枚举常量是一种符号常量。Red,Green等是符号 常量,它们表示各个枚举值,在内存中表示以整型数。 如果没有专门指定,第一个符号常量的枚举值就是0, 其他枚举值依次为1,2,3。所以,C+自动给Red 赋0,Green赋1,等等。 2.3 变 量 变量是指程序在运行时其值可改变的量 。每个变量由一个变量名惟一标识,同时, 每个变量又具有一个特定的数据类型。不同 类型的变量在内存中占有存储单元的个数不 同。 2.3.1 变量名命名 变量名的命名要遵守以下规则: 不能是C+保留字。C+的保留字如表2-2所列。 第一个字符必须是字母或下划线,中间不能有空格。 变量名除了使用26个英文大小写字母和数字外,只能使 用下划线。 一般不要超过31个字符。 变量名不要与C+中的库函数名、类名和对象名相同。 例如,下列变量名是合法的变量名: a123 c3b file_1 asm auto break case catch char class const continuedefault delete do doubleelseenumexternfloatfor friendgotoifinlineintlong newoperatoroverloadprivateprotectedpublic registerreturnshortsignedsizeofstatic structswitchthistemplatethrowtry typedefunionunsignedvirtualvoidvolatile while 表2-2 C+的标准保留字 2.3.2 变量定义和说明 C+中,变量使用之前一定要定义或说明,变量定 义的格式一般为: 修饰符 类型 变量名; /注释 其中,类型指出变量所存放的数据的类型;变量名 是任意合法的变量名;注释指明该变量的含义和用途; 修饰符进一步描述了变量的使用方式。修饰符和注释是 任选的,可以没有。 多个同一类型的变量可以在一行中定义,中间用逗 号隔开,也可以分别定义。 例如: int a,b,c;/定义3个整型变量a,b,c 和 int a;/定义整型变量a int b; /定义整型变量b int c; /定义整型变量c 二者等价。 2.3.3 变量初始化 变量初始化一般采用两种方式。 第一种方式是在定义变量时可以给变量赋一个初值 ,例如: int a=3; float b=3.4; const int c=5; 第二种方式是先定义变量,然后通过赋值语句使变 量初始化,例如: int a; a=3; 2.4 运算符与表达式 在程序中,表达式是计算求值的基本单 位,它是由运算符和运算数组成的式子。运 算符是表示进行某种运算的符号。运算数包 含常量、变量和函数等。 C+语言的运算符按其在表达式中与运算 对象的关系(连接运算对象的个数)可分为 : 单目运算(一元运算符,只需一个操作数 ) 双目运算(二元运算符,需两个操作数) 三目运算(三元运算符,需三个操作数) 按其在表达式中所起的作用又可分为: 算术运算符 + - * / % 关系运算符 = = != 逻辑运算符 ! i=3*(4+5); /i的值变为27 (2)赋值表达式本身的运算结果是右侧表达式的值,而结 果类型是左侧变量的数据类型。例如: int i=1.2*3; /结果为3,而不是3.6 (3)赋值运算符的结合性是从右至左的,因此,C+程序中可以 出现连续赋值的情况。例如,下面的赋值是合法的: int i,j,k; i=j=k=10; /i,j,k都赋值为10 (4)复合运算符: +=(加赋值),-=(减赋值), *=(乘赋值),/=(除赋值), %=(取模赋值), =(右移赋值), a+=a; 表示 a=(a+a)=(12+12)=24; 又例如: int a=12; a+=a-=a*=a; 表示 a=a*a /a=12*12=144 a=a-a /a=144-144=0 a=a+a /a=0+0=0 2.4.3 关系运算符 (1)关系运算符用于两个值进行比较,运算结果为true(真)或 false(假),分别用值非0(true)或0(false)表示。C+中 的关系运算符如下: (大于), =(大于等于),=(等于), !=(不等于), (2)关系运算符都是双目运算符,其结合性是从左到右,、=运算符的优先级相同,=和!=运算符的优先级相同, 前者运算的优先级高于后者。 (3)关系运算符的优先级低于算术运算符。 例如: a+bc等价于 (a+b)c a!=bc 等价于 a!=(bc) 2.4.4 逻辑运算符 b=a+; 等价于 b=a;a=a+1; int a=3;b=a-; 等价于 b=a;a=a-1; (运算符后置用法,代表先使用变量,然后对变量增值) int a=3;b=+a; 等价于 a=a+1;b=a; int a=3;b=-a; 等价于 a=a-1;b=a; (运算符前置用法,代表先对变量增值,再使用变量) (4)C+编译器在处理时尽可能多的自左向右将运算符结 合在一起。 例如:a+b表示为(a+)+b而不是a+(+b)。 (5)在调用函数时,实参的求值顺序一般为自右向左。而 不是PASCAL语言那样自左向右。例如: int a=1; printf(“%d,%d,%d”,a+,a+,a+); 输出的结果为3,2,1而不是1,2,3。 2.4.6 条件运算符 (1)条件运算符“?:”是C+中惟一三目运算符,其形式 为: 表达式1 ?表达式2 :表达式3 它的运算方式为:先计算表达式1的值,如果其值 为非0(真),则表达式2的值就是整个表达式的最终结 果;否则表达式3的值就是整个表达式的值。常见的一 个例子为: max=(ab)?a:b) 上面例子定义了一个求两个数a和b中最大值,其中 决定哪一个是最大值用了条件运算符。 (2)条件运算符的结合性是自右向左。例如有以下条件表达式 : ab?a:cd?c:d 相当于 ab?a:(cd?c:d) (3)条件运算符的优先级别高于赋值运算符,低于关系运算符 和算术运算符。例如有: ab?a-b:b-a 相当于 ab?(a-b):(b-a) 2.4.7 位运算符 (1)位(bit)是计算机中表示信息的最小单位,一般用0和1表 示。一个字符在计算机中用8个位表示,8个位组成一个字节。 C+语言需要将人们通常所习惯的十进制数表示为二进制、八 进制或十六进制数来理解对位的操作。C+中所有的位运算符 如下: (按位求反), (右移), a+b,b+c,c+a; 则先求解a+b,再求解b+c,最后求解c+a,整个表 达式的结果为c+a的结果。 2.4.10 运算符优先级 (1)运算符优先级决定了在表达式中各个运算符执行的先 后顺序。高优先级运算符先于低优先级运算符进行运算 。在优先级相同的情形下,则按从左到右的顺序进行运 算。 (2)当表达式中出现了括号时,会改变优先级。先计算括 号中的子表达式值,再
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 国学经典解读图书出版行业跨境出海项目商业计划书
- 二手车市场绿色供应链创新创业项目商业计划书
- 人工智能伦理与法律教育企业制定与实施新质生产力项目商业计划书
- 自动化软胶囊填充封装机行业深度调研及发展项目商业计划书
- 书籍节庆策划与创新创业项目商业计划书
- 远程手术指导与协作系统行业跨境出海项目商业计划书
- 药物稳定性提升方案行业深度调研及发展项目商业计划书
- 体育社交平台行业深度调研及发展项目商业计划书
- 会所租用管理制度
- 会计从业管理制度
- 2025江苏扬州宝应县“乡村振兴青年人才”招聘67人笔试备考试题及答案详解一套
- 2025年泸州市中考语文试卷真题
- 2025年动漫IP产业链构建与动漫产业产业链协同效应研究报告
- 2025年安全员之A证企业负责人模拟题库及答案(附答案)
- 食管癌全程管理专家共识(2025)解读
- 山东省潍坊安丘市等三县2024-2025学年高一下学期期中考试英语试题(原卷版+解析版)
- 2024-2025学年八年级下册道德与法治期末测试模拟卷(统编版)(含答案)
- 美团入驻协议书
- 电力故障应急演练改进预案
- 胃肠间质瘤规范化外科治疗中国专家共识(2025版)解读
- 公路水运工程生产安全重大事故隐患判定标准2025
评论
0/150
提交评论