C++程序设计第2章_第1页
C++程序设计第2章_第2页
C++程序设计第2章_第3页
C++程序设计第2章_第4页
C++程序设计第2章_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第2章数据类型与表达式 2 1C 的数据类型1 2 3 数据常量 变量4 数据类型整型 实型例 数据结构 整型常量 实型变量 数据类型基本类型整型短整型 shortint 整型 int 长整型 longint 字符型 char 浮点型单精度型 float 双精度型 double 长双精度型 longdouble 布尔型 bool 空类型 void 非基本类型枚举类型 enum 构造类型 数组类型type 结构体类型 struct 共用体类型 union 类类型 class 指针类型type 引用类型type 布尔型就是逻辑型 空类型就是无值型 表2 1int4B范围unsignedint4Bshort2Bunsignedshort2Blong4Bunsignedlong4Bchar1Bunsignedchar1Bfloat4Bdouble8BLongdouble8B说明 1 2 3 4 5 2 2常量2 2 1常量常量 字面常量或直接常量 其值不能改变的量称为常量 例 1 整型常量 12 0 32 实型常量 1 23 4 63 字符常量 a d A 注意 一定用单引号 单个字符 数值型常量 2 2 2数值常量1 整型常量1 整型常量的类型整型常量的数值范围整型常量可看作的类型可赋给整型变量的类型 32768 32767shortshort或int或long 214783648 214783647intint或long0 65535 正数 unsignedshortunsignedshort或unsignedint或unsignedlong0 4294967295unsignedintunsignedlong 正数 或unsignedint 2 整型常量的表示方式十进制整数 123 456三种方式八进制整数 以数字0开头的数 0123十六进制整数 以数字0 x开头的数 0 x123整型常量后加一个字母l或L 则认为是long型 2 实型常量 浮点数 1 实型常量的表示方式1 十进制形式如 0 123 123 123 0 123 0 02 指数形式如 123e 3 123E3注意 e或E之前必须有数字 e或E之后必须为整数 例 不合法e32 1e3 5 e3e 2 实型常量的类型一般双精度double 8B 例 2 45678 4523 65可强制定义为float 4B 可在数后加f或F如 1 65f或654 87F 目的 提高运算速度 也可强制定义为longdouble 8B 可在数后加l或L如 1 65l或654 87L 有效位数 3 实型数据内存的存放形式 指数形式存放 符号位有效位数 小数部分 有效数字 精度指数部分指数位数 数值范围 2 2 3字符常量1 普通的字符常量用单引号括起来的一个字符字符常量 如 a A 2 转义字符常量 以 开头的字符序列 如 n 换行 endl见表2 2 例 1 101 101 1 82 1 80 65查ASCII码表 A 2 012 12 1 81 2 80 10查ASCII码表 n 3 x42 42 4 161 2 160 66查ASCII码表 B 小结 1 整型类型short2Bint4Blong4Bunsignedshort2Bunsignedint4Bunsignedlong4B2 整型常量表示方法 3种 可看作的类型 强制的类型 3 实型类型float4Bdouble8Blongdouble8B 小结4 实型常量表示方法 2种 1 注意内存的存放方式2 可看作的类型 强制的类型 5 字符型类型char1Bunsignedchar1B6 字符型常量表示方法 2种 3 字符数据在内存中的存储形式及其使用方法1 存储形式 1 不是把单个字符放入内存单元 而是将该字符的ASCII码放入内存的存储单元 2 输出字符时 将ASCII码转为字符 例 charc1 c1 a 在C 中字符型数据和整型数据之间就可以通用 例2 1将字符赋给整型变量 include 包含头文件iostream 预处理命令usingnamespacestd 使用命名空间stdintmain 主函数首部 函数体开始inti j 定义变量i A 赋值语句j B 赋值语句cout i j n 输出语句return0 如程序正常结束 向操作系统返回一个零值 函数结束 运行结果 6566 可以看到 在一定条件下 字符型数据和整型数据是可以通用的 但是应注意字符数据只占一个字节 它只能存放0 255范围内的整数 128 127 例2 2字符数据与整数进行算术运算 下面程序的作用是将小写字母转换为大写字母 include 包含头文件iostreamusingnamespacestd 使用命名空间stdintmain charc1 c2 c1 a c2 b c1 c1 32 c2 c2 32 cout c1 c2 endl return0 运行结果为 AB 4 字符串常量1 用双撇号括起来的部分就是字符串常量 如字符串常量 abc Hello a b Li ping 2 内存字节 abc 在内存中占4个字节 而不是3个字节 编译系统会在字符串最后自动加一个 0 作为字符串结束标志 但 0 并不是字符串的一部分 它只作为字符串的结束标志 有效字符与内存长度 例 cout abc endl 内存 4B输出3个字符abc 而不包括 0 3 字符串有结束标志 目的 判断字符串是否结束 结束标志为 0 空操作 ASCII码 0 非空格 空格ASCII码 32 例 1 a 2B a 1B所以 a a 注意 1 字符串常量 abc n 包含几个字符 不是5个而是4个字符 其中 n 是一个转义字符 但它在内存中占5个字节 包括一个 0 字符 2 abc n 此时字符包括5个字符 即a b c n 3 如果有以下输出语句 cout abc n endl 则会输出 abc 然后换行 4 如果有以下输出语句 cout Isay Thankyou n 则会输出是 Isay Thankyou 5 如果在一个字符串中最后一个字符为 则表示它是续行符 下一行的字符是该字符串的一部分 且在两行字符串间无空格 如 cout WemuststudyC hard 则输出 WemuststudyC hard 小结1 字符型类型char1Bunsignedchar1B2 字符型常量表示方法 2种 3 字符型在ASCII范围内可与整型通用4 字符串常量 内存中有结束标志 内存长度 有效字符长度 2 2 4符号常量 用一个标识符代表一个常量的 称为符号常量 注意 1 习惯上 符号常量用大写 变量用小写 2 符号常量用 define命令行定义 命令行后无分号 因为 非语句 例2 3求某一物体的总价钱 设变量 单价 PRICE 字符常量 数量 num总价 total definePRICE30 注意这不是语句 末尾不要加分号intmain intnum total num 10 total num PRICE cout total total endl return0 优点 1 含义清楚如 10 PRICE2 一改全改 definePRICE40 2 3变量2 3 1什么是变量 其值可以改变的量称为变量变量名 变量的名字 有一个存储单元 内存地址 变量值 在该存储单元存放变量的值使用变量时 须定义初始化如 inta a 3 2 3 2变量名规则 标识符 标识符 有效的字符序列 或者说就是一个名字 可用来标识 变量名 符号常量名 函数名 数组名 类型名 文件名 源文件 1 C 语言规定标识符只能由字母 数字和下划线三种符号组成 且第一个字母必须为字母或下划线 一般长度b2 注意 大小写不同例 sum和Sum SUM均为不同的变量 3 不能用C 的关键字 系统函数名和类名 例 int 另 iCount cSex 表示类型 i int c char 2 3 3定义变量1 C 变量强制定义 先定义 后使用 目的 1 未先定义的 不作为变量名例 intstudent 编译出错 statent 30 2 每一变量 指定为确定类型 编译时则会分配相应的存储单元 例 整型变量和实型变量 分配的单元不同 2B或4B4B或8B3 每一变量属于一个类型 编译时检查运算是否合法 例 inta b floata b 求余a b 合法 a b 不合法 如 4 34 3 3 1 2 定义变量的形式定义变量的一般形式是 变量类型变量名表列 shortint int longint unsigned float double char 1 变量名表列指的是一个或多个变量名的序列 例 floata b c d e 注意 各变量间以逗号分隔 最后是分号 2 可以在定义变量时指定它的初值 例 floata 83 5 b c 64 5 d 81 2 e 3 只要求在第一次使用该变量之前进行定义即可 也就是说 它可以出现在语句的中间 如 inta 定义变量a 在使用a之前定义 a 3 执行语句 对a赋值floatb 定义变量b 在使用b之前定义 b 4 67 执行语句 对b赋值charc 定义变量c 在使用c之前定义 c A 执行语句 对c赋值 2 3 4为变量赋初值1 变量初始化允许在定义变量时对它赋予一个初值 这称为变量初始化 初值可以是常量 也可以是一个有确定值的表达式 例 floata b 5 78 3 5 c 2 sin 2 0 2 如果对变量未赋初值 则该变量的初值是一个不可预测的值 即该存储单元中当时的内容是不知道的 例 若未对a和b赋值 执行输出语句 cout a b c endl 输出结果可能为1 48544e 38151 81858 各次运行情况可能不同 3 初始化不是在编译阶段完成的 只有在第4章中介绍的静态存储变量和外部变量的初始化是在编译阶段完成的 而是在程序运行时执行本函数时赋予初值的 相当于执行一个赋值语句 例 inta 3 相当于以下两个语句 inta 指定 为整型变量a 3 赋值语句 将 赋给 4 对多个变量赋予同一初值 必须分别指定 不能写成 floata b c 4 5 而应写成floata 4 5 b 4 5 c 4 5 或floata b c 4 5 a b c 原因 2 3 5常变量1 常变量 constantvariable 在定义变量时 如果加上关键字const 则变量的值在程序运行期间不能改变 这种变量称为常变量 例如 constinta 3 constintb 3 6 c 3 cos 1 5 1 在定义常变量时必须同时对它初始化 即指定其值 此后它的值不能再改变 2 常变量不能出现在赋值号的左边 只读内存 例 constinta a 3 常变量不能被赋值 3 constintb 3 6 c 3 cos 1 5 注意 系统标准数学函数cos 本程序单位的开头加上以下 include命令 include或 include4 常变量 又称为只读变量 read only variable 5 区别用 define命令定义的符号常量用const定义的常变量 符号常量只是用一个符号代替一个字符串 预编译 把所有符号常量替换为所指定的字符串 无类型 无存储单元 常变量具有变量的特征 有类型 编译在内存中存在着存储单元 可用sizeof运算符测出其长度 与一般变量惟一的不同是指定变量的值不能改变 例 floata cout sizeof a endl 小结一 1 符号常量 definePI3 14 2 变量1 变量名2 变量值3 标识符4 变量的定义 先定义 后使用 5 变量的初始化 注意 与变量赋初值有否区别 6 常变量 注意 与符号常量的区别 小结二 常量与变量1 整型变量shorti j 1 2Bintm 4Blongn 4Bunsignedshorti1 j1 3 2Bunsignedintk 2 4Bunsignedlongk1 1 4B2 实型变量floata 3 0 4Bdoublex 5 31 8Blongdoubley 3 41 8B3 字符变量charc1 a 1Bunsignedc1 b 1B 2 4C 的运算符C 提供了以下运算符 1 算术运算符 2 关系运算符 3 逻辑运算符 4 位运算符 5 赋值运算符 及其扩展赋值运算符 6 条件运算符 7 逗号运算符 8 指针运算符 C 提供了以下运算符 9 引用运算符和地址运算符 10 求字节数运算符 11 强制类型转换运算符 类型 或类型 12 成员运算符 13 指向成员的运算符 14 下标运算符 15 其他 如函数调用运算符 2 5算术运算符和算术表达式2 5 1基本的算术运算符注意 1 两个整数相除的结果为整数例 5 3结果为1 5 3结果为 1 原则 向零取整 2 运算中有一个数为实数 则结果为double型 2 5 2算术表达式和运算符的优先级与结合性1 算术表达式用算术运算符和括号将运算对象连接起来的 符合C 语法规则的式子 称算术表达式 2 运算对象 操作数 常量变量函数例 inta b c floatd e a b c 1 5 a 合法算术表达式a b d e不合法算术表达式 3 运算符的优先级与结合性优先级 高低结合性 自左向右例 inta 1 b 2 c 3 表达式 a b c 1 5 a 2 3 1 5 a 0 1 5 a 1 5 9795 5 double 2 5 3表达式中各类数值型数据间的混合运算1 1 整型 int short long unsigned 实型 float double可以混合运算字符型 char unsignedchar 2 运算时 先转换为同一类型 再运算 如 10 a 1 5 8765 1234 b 2 转换规则 低级向高级转换 结果为高级类型 例1 10 2 8 12 8intdoubledouble 例2 inti floatf doubled longe 表达式10 a i f d eintdoubledoubledoubledouble注意 类型转换是系统自动进行的 2 5 4自增 自减运算符1 运算符 作用 使变量的值增1或减1例 i ii i i 相当于i i 1 2 优先级 后置 前置 高低3 结合性后置 自左向右 前置 自右向左 说明 1 i i先增或减 才使用i2 i i 先用i 然后自增自减例1 inti 3 cout i endl 先增 i 4输出 i 4inti 3 cout i endl 先用 输出i 3再增 i 4 例2 inti i 3 cout i endl 分析 1 优先级2 用括号将优先级标出 i 3 先用 输出 3再增 i 4 注意 1 常用于循环语句指针变量2 用于其它地方 易出错 慎用 有关 表达式使用中的问题说明 1 C 运算符和表达式使用灵活 小心谨慎 例 i 3 i i i 系统是 先用 后增3 3 3i6如果 编程者想得到12 应 i 3 a i b i c i d a b c 2 结合性问题如 i ji j i j注意 应避免此类含糊的表达式 3 其它误区例 i 3 cout i i 尽量不这样编程 结果 4 3j i 1 cout i j 好的编程结果 3 4 2 5 5强制类型转换运算符1 目的 可利用强制类型转换运算符将一个表达式转换成所需的类型 2 一般形式 类型名 表达式 注意 两个括号都应存在 例 int x y 两个括号省略的情况 只能省略其中的一个 第一个括号可省略 表达式是变量 例 int x y第二个括号可省略 C 也允许 但不主张 例 int x或int x y 类型转换 自动类型转换强制类型转换例 floata a 3不合法 int a 3合法 例2 4强制类型转换 includeusingnamespacestd intmain floatx inti x 3 6 i int x cout x x i i endl return0 运行结果如下 3 6 i 3 2 6赋值运算符和赋值表达式2 6 1赋值运算符赋值符号 就是赋值运算符 2 6 2赋值过程中类型转换赋值运算符两侧不一样 要类型转换 转换规则 1 实型整型方法 舍弃小数 不四舍五入 例 inti i 3 56 i的内存放3 2 整型实型方法 值不变 但浮点表示 并补足有效位数 例 floatf doublef f 23 f 23 内存 23 00000内存 23 0000000000000 7位有效位数 14个0 若16位有效位数 13个0 若15位有效位数 3 doublefloatfloatdouble方法 截取前7位有效数字扩展有效数字至16 15 位例 floatf doubled 123 456789e100 溢出f d 注意溢出问题 4 char整型 1B 2B 4B 4B 方法 符号扩展 高位为0 则补0高位为1 则补1名词 高8位 低8位 例charc 376 shorti i c cout i endl 5 intshortcharlong方法 截取低8位 例 shorti 289 charc c i cout c endl 6 intunsignedint 长度相同 shortunsignedshortlongunsignedlong方法 原样照赋 例2 5unsignedshorta shortb 1 a b cout a endl 补充7 shortint long例 方法 符号扩展 shorta 1 intb b a cout b endl int longshort例1 方法 截取 intb 8 shorta a b cout a endl 例2 intb 65536 shorta a b cout a endl 补充8 unsignedshortint long方法 高位补0 符号统一 保持正数 例 unsignedshorta 65535 intb b a cout b endl unsignedintintunsignedshortshortunsignedlonglong方法 原样照赋 例 b 1 unsignedshorta 65535 shortb b a cout b endl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论