(06级)数据类型、运算符和表达式.ppt_第1页
(06级)数据类型、运算符和表达式.ppt_第2页
(06级)数据类型、运算符和表达式.ppt_第3页
(06级)数据类型、运算符和表达式.ppt_第4页
(06级)数据类型、运算符和表达式.ppt_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

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

文档简介

第2章数据类型 运算符与表达式 2 1保留字和标识符2 2C 的基本数据类型2 3常量和变量2 4基本运算符和表达式2 5类型转换 简单地说 程序 数据结构 算法 C 程序的构成 1 数据描述 2 执行步骤 算法 回顾 例1 1 一个简单的C 程序 includevoidmain void intnum square cout num square num num cout num的平方为 square n 下面学习 程序的各种语法元素 2 1保留字和标识符 2 1 1保留字 ReservedWordorKeyword C 语言自身使用的 具有特殊含义和用途的英文单词称为保留字或关键字 如 例1 1 中的类型说明符int 用于定义整型变量 用户不能将其作为自己的变量名或函数名使用 2 1 2标识符 标记识别对象的符号 标识符 identifier 有效字符序列 用来标识用户自己定义的变量名 符号常量名 函数名 数组名 类型名 文件名等 命名规则 只能由字母 数字和下划线三种字符组成 且第一个字符必须为字母或下划线最大长度为1 247个字符 如 MyNameaverageGetDayStudentName aboveLotus 1 2 3 非法标识符如 M D John 1233Dmax 合法标识符如 有时用匈牙利命名法 例 includevoidmain void inta b sum 定义变量 a 123 b 456 sum a b cout sumis sum n 2 2C 的基本数据类型 数据类型 基本类型 导出类型 整型实型字符型空类型 无值型 单精度型双精度型 数组类型指针类型结构体类型共用体类型枚举类型 不论是变量还是常数 在计算机内部都要按照某种形式存放 存放形式由数据类型决定 以上基本类型数据占内存字节不相同 因此数值范围也不同 见P8表2 1及表2 2 在C 中为何要使用多种数据类型 对基本类型 可以加修饰 如 int signedintunsignedintshortint signedshortintunsignedshortintlongint signedlongintunsignedlongint 再加修饰 如 注意 int型变量与unsignedint型变量的区别 2 3常量和变量2 3 1常量 常量 在程序运行过程中 其值不能被改变的量 1 整型常量 十进制整数123 456 八进制整数0123 011 十六进制整数0 x123 0 xAB 长整型与无符号型常数12L 0234L 0 xABL12U 0234U 0 xABU 2 实型常量 在内存中以浮点形式存放 均为十进制 无数制区分 小数形式 必须有小数点1 651 123 指数形式 也称为科学表示法 如123000 0可写为1 23e50 00368可写为3 68E 3e或E前必须有数字 1000写为1e3不能写为e3 3 字符型常量 用于表示ASCII字符 见附录A P352 在内存中存放对应的ASCII码值 如 a 的ASCII码为97 则在内存中用一个字节存放 在源程序中最基本的表示形式为 单引号括起来的一个字符 如 a A 01100001 对于不可打印的字符 可以用转义字符形式表示 注意 n 与 n 的区别 转义字符 以反斜杠 引导的特殊形式的非显示字符或表示特定意义的字符常量 n t b ddd xhh 见P9表2 3 注意 字母A的ASCII码是 65 10 101 8 41 16在程序中表示字母A 可以有三种方法 A 101 x41 n 表示一个控制字符 n 表示一个字母 0 意义 4 字符串常量 用双引号括起来的字符序列 在内存中存放字符序列的ASCII码值 最后加一个结尾标志 0 如 Howdoyoudo CHINA a 字符串结束标志符是 0 注意 a 和 a 是不同的 符号常量 用标识符代表一个常量 必须先定义后使用 例 定义标识符常量 definePRICE30 definePI3 1425926 defineS China constfloatpi 3 14 2 3 2符号常量 例2 1符号常量的使用 include definePI3 1415926voidmain void doubleangle radian cin angle radian angle PI 180 角度 弧度cout radian n 好处 1 提高程序的可读性 2 程序中使用多处 一改全改 2 3 3变量 变量 其值可以改变的量 变量名 一个变量的符号名 由标识符构成 一个变量占据内存一定的存储单元 在存储单元中存放该变量的值 inta b 定义2个整型变量a bunsignedu 定义1个无符号整型变量ufloatf 定义1个单精度实型变量doubled 定义1个双精度实型变量charc1 c2 c3 定义3个字符型变量c1 c2 c3 1 定义变量 有关变量取名的注意事项 1 区别大小写 如sum与Sum为不同的变量名 2 先定义后使用 确定类型 分配单元 语法检查 3 在一个程序单元中不能重复定义 4 关键字 保留字 不能作为标识符 5 最大长度随不同的C 语言系统而定 VC 识别前247个字符 超过无效 6 按义取名 2 变量赋初值给变量赋初值的方法有两种 1 变量定义后 用赋值语句赋初值 例如 inta b a 12 b 24 charc1 c2 c1 A c2 B 2 在定义变量的同时 直接赋初值 称为变量的初始化 例如 inta 12 b 24 charc1 A c2 B 2 4基本运算符和表达式 2 4 1C 运算符及表达式简介 完成对常量 变量作运算的符号称为运算符 把参与运算的对象称为操作数 操作数可以是常量和变量等 各种运算符见P12表2 4 一元运算符 二元运算符 三元运算符 2 4 2算术运算符和算术表达式 基本算术运算符 整数运算时为整除 结果为整数 模运算或称求余运算 必须为整型数据 例 7 3结果 7 0 3结果 7 3结果 22 333333 1 由运算符和操作数构成表达式 如 a ba c d a c d 2 4 3运算优先级和结合性 优先级 对于同一表达式中出现多个运算符 先算哪一个 结合性 在两种运算优先级相同时 自左向右 还是 自右向左 运算称为结合性 如 算术运算符的优先级与结合性 优先级 较低 较高 结合性 自左向右 例 表达式 6 3 2 自左向右 或 自右向左 运算结果不同 2 4 4关系运算符和关系表达式 关系运算 实际上就是 比较运算 关系运算符及其优先次序 小于小于等于大于大于等于恒等于不等于 关系运算符及其优先级说明 a b c等效于a b c c a b等效于c a b 算术关系 和 关系 和 关系表达式 1 用关系运算符连接两个表达式 inta 1 b 2 c 3 则表达式a b的值为0则表达式b a c的值为1 2 关系表达式的值 运算结果 是逻辑值 真 或 假 1表示真0表示假 关系运算符的结合性 自左向右 2 4 5逻辑运算符和逻辑表达式 逻辑运算符及其优先级 C 语言提供三种逻辑运算符 逻辑 与 逻辑 或 逻辑 非 一元运算符 只有一个操作数 如 a 逻辑运算的意义 a b 当a b均为真时 表达式的值才为真 a b 当a b均为假时 表达式的值才为假 a 当a为假 a为真 反之 当a为真时 a的值为假 逻辑运算符的优先次序 非 算术关系 逻辑表达式 用逻辑运算符将表达式连结起来 2 C 编译系统在给出逻辑运算结果时 以数值1代表 真 以数值0代表 假 1 运算时 在判断一个量是否为 真 时 以非0代表 真 以0代表 假 例如 已知a 4则 a的值是0已知a 0 b 5则a b的值是0则a b的值是1则 a b的值是1 注意 注意 在C 程序中 欲表示数学关系0 x 10 C 的逻辑表达式必须写成0 x x 10 而不能写成0 x 10 为什么 2 4 6位运算符和位运算表达式 位运算是对整型数据的运算 可以操作到位 符号位参与运算 主要用于设计系统程序 位运算符共有6种 它们是 按位与 按位或 按位异或 按位取反 左移 举例 按位 与 例如 已知 chara 3 b 2 c 求 c a 此时 可将a b c看成是一个字节长度的整型数 其它位运算 自学 2 4 7自增 自减运算符和表达式 使变量的值加1或减1的运算 如 i i 在使用i之前加或减1 i i 在使用i之后加或减1 inti 3 j j i 运算后i j inti 3 j j i 运算后i j 注意 只能用于变量 不能用于常量和表达式 如 3 a b 错误 i 4 j 4 i 4 j 3 2 4 8赋值运算符和赋值表达式 1 赋值运算符 是赋值运算符 赋值表达式格式 求解过程 求出的值 赋给 赋值表达式的值 为的值 如 a b c 还可以是另一个赋值表达式 如 a b 5a 5 c 6 a b 4 c 6 如果a初值为2 表达式结果 结果为7 如 a 3 3是最简单的表达式 i i 1 它不同于 等于号 注意优先级与结合性 b c d a 5 自右向左 表达式结果分别为 51110 2 复合赋值运算符 复合赋值运算符 x y 8 等价于x x y 8 x 3 等价于x x 3 x 9 简写为 a 3 a a 3 简写为 a b a a b 同理 赋值运算符以及复合赋值运算符的运算优先级比算术运算符优先级低 运算结合性为自右向左 等价于x x 9 例 a a a a 如果a初值为2 计算后a的值 表达式的值 a a a a 结果a的值为 4表达式的结果也为 4 2 4 9逗号运算符和逗号表达式 逗号运算符 逗号表达式 如 a 3 5 a 4 a 5 逗号运算符优先级最低 结合性 自左向右 求解过程 依次计算 的值 逗号表达式的值 为的值 运算结束后 a的值为15整个表达式的值为20 a 3 5 a 4 x a 3 6 3 赋值表达式 x a 3 6 3 逗号表达式 例 如下表达式 是逗号表达式还是赋值表达式 运算结束后a x 表达式 a 15 表达式 60 a 3 x 18 表达式 18 a 3 x 3 表达式 18 逗号表达式 2 4 10sizeof 运算符和表达式 例inti doublex sizeof int sizeof i sizeof double sizeof x 格式 sizeof 类型标识 变量名 功能 求某类型变量所占字节数 例 求 2 4 11逻辑表达式运算优化时的副作用 从左向右扫描 计算 当为真时 继续计算 当为假时 即能确定整个表达式的值为假 则停止计算 例 求 从左向右扫描 计算 当为假时 继续计算 当为真时 即能确定整个表达式的值为真 则停止计算 课堂练习intx y z w 输出结果 x y z 1 w x y 输出 2111 2 5类型转换2 5 1赋值时的自动类型转换 如果赋值运算符两侧的数据类型不一致 则遵循以下几条原则进行类型转换后赋值 1 整型变量 实型数据 舍弃小数 无四舍五入 inti 3 96 i为3 2 实型变量 整型数据 数值不变 有效数位增加 floatf 23 f为23 0 7位有效数字 doubled 23 d为23 0 15位有效数字 3 整型数据之间相互赋值 整型数据类型有 signed charunsignedchar signed shortunsignedshort signed intunsignedint signed longunsignedlong 各种类型的整型数占用的字节数是不同的 其二进制位数有长有短 它们之间相互赋值 其实就是它们内存数据之间的赋值 分两种情况 下面以int型数据与char型数据之间的赋值进行说明 将int型变量赋给字符型变量时 长 短 方法 截取低位赋值 例 signedcharc1 250 c1的真值为 6 将字符型变量赋给int型变量时 短 长 又分成两种情况 有符号的字符型数据 整型变量需符号位扩展 例 charc1 15 inti i c1 扩展正号 结果i的真值为15 charc1 250 inti i c1 扩展负号 结果i的真值为 6 无符号的字符型数据 整型变量前面补0unsignedcharc1 250 inti i c1 前面补0 结果i的真值为250 2 5 2各种类型运算量混合运算时的自动类型转换 C 语言的数值型数据 常量变量 包括 整型 int shortint longint unsignedint unsignedshort unsignedlong 实型 float double 字符型 char unsignedchar 各种数据类型 它们的常量和变量之间可以混合运算 两个量运算时 在计算机内部首先将它们转换成相同数据类型的量 然后进行运算 虽然这种转换是C 内部自动完成的 但是若编程者知道了转换机理 对掌握及灵活运用C 表达式是有帮助的 转换原则如P18图2 3所示 inti floatf doubled 10 a i f d i int double double double double 例 2 5 3强制类型转换 形式 类型名 表达式 或 类型名 表达式 例 inti a floatx y doublez a int x y 或a int x y z double a 或z double a a int z i 或a int z i 注意 1 强制转换的对象 表达式 2 强制转换并不将变量本身的类型转变 小结 类型转换有两种 1 自动转换 赋值时 混合运算时 2 强制转换 课堂练习 求下面算术表达式的值 1 已知x 2 5 a 7 y 4 7求x a 3 int x y 2 4的值 2 已知a 2 b 3 x 3 5 y 2 5求float a b 2 int x int y 的值 2 53 5 EX1 P19练习2 1 10题写在书上 EX1 P19习题2 一 1 合法常量6553566L1 24e 2 abc 892 123 0 xAB2 合法的用户自己的标识符Max 301Char3 x 0000 000000001100y 0000 000001001101z 1111 1111100011004 inta 2 b 3 floatx 3 5 y 2 5表达式float a b 2 int x int y 的值为3 55 floatx 2 5 y 4 7 inta 7 表达式x a 3 int x y 2 4的值为2 5 EX1 P19习题2 二 6 已知inta 8 n 5 下面计算完成后a n及表达式的值a的值n的值表达式的值 1 a a1616 2 a 266 3 a 2 34040 4 a a a00 5 a n 2 010 6 a a a a00 7 a 3 5 a 41560 8 n a 3 6 3 31818 9 n a 3 6 33318 10 a a n151 EX1 P19习题2 三 7 已知charc 277 请写出ch的内存内容的二进制形式 ch 100010101只截取低8位8 已知charch 249 inti ch 请写出i的内存二进制形式 变量i的内存二进制形式 111110011111111111111111111111119 已知unsignedcharch 249 inti ch 请写出i的内存二进制形式 变量i的内存二进制形式 11111001000000000000000000000000 EX1 P19习题2 四 10 将下面的表达式看成逻辑表达式 已知inta 1 b 2 c 3 写出逻辑表达式的运算结果 1 a b c b c0 2 a b c1 3 a b c 21 4 x a y b 0 5 a 5 1 6 a b c 1 b c 21 7 a b a 20 8 a c b

温馨提示

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

评论

0/150

提交评论