C语言第三章.ppt_第1页
C语言第三章.ppt_第2页
C语言第三章.ppt_第3页
C语言第三章.ppt_第4页
C语言第三章.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

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

文档简介

第3章数据类型 运算符和表达式 教学目的与要求1 了解基本类型及其常量的表示法2 掌握变量的定义及初始化方法3 掌握运算符与表达式的概念4 领会C语言的自动类型转换和强制类型转 左值和赋值的概念教学重点和难点本章的教学重点是掌握常用数据类型 常用运算符 变量和常量的概念和区别 数学公式转化为C语言表达式的基本能力 而难点是自加和自减以及类型的转换 词法元素 出现在C程序中的字符又组成为一个个的词 这些词称为构成C程序的词法元素 分为关键字 标识符 常量 串常量 运算符和标点符号六类关键字 即已由系统内部使用 不能重作其它定义C关键字共有32个 教材P365附录B 标识符 identifier 用来标记符号常量 变量 函数名 数组 类型等有效字符序列标识符的使用规则由英文字母 数字 0 9 或下划线 组成的字符序列 且必须由英文字母或 开头 大小字母不同 最大长度为32个字符 大于32个不识别 例 判断下面哪些是合法的标识符 MyFile 94Salary Salary94 Salary94 amount amount void f3 5 Num of Student 3 1C语言数据类型 数据类型 基本类型 构造类型 指针类型 空类型 整型字符型浮点型枚举类型 数组类型结构体类型共用体类型 C语言中的数据又有常量和变量之分 它们分属以上这些不同类型用以上这些类型还可以构成更复杂的类型 3 2常量与变量 常量 在程序运行过程中 其值不能被改变的量分类 直接常量和符号常量 在C语言中 常量可以用符号代替 代替常量用的符号称为符号常量 符号常量在使用之前必须定义 格式为 define符号常量常量 例如 definePI3 14159 definePRICE30 include stdio h main intnum total num 10 total num PRICE printf total d total 定义PRICE代表常量30 以后在程序中出现的PRICE都代表30 等价于 total num 30 说明 符号常量必须先定义后才能用它表示一个数值 符号常量的值在其作用域内不能改变 也不能再被赋值 符号常量名习惯用大写字母表示 变量 在程序运行过程中 其值可以改变的量 一个变量应该有一个名字 在内存中占据一定的存储单元 在该存储单元中存放变量的值 注 1 变量名的命名要符合标识符的命名规则2 变量必须 先定义 后使用 定义格式 类型说明符变量名1 变量名n 例 include stdio h main 求两数之和 inta b sum 定义a b sum为整型变量 a 123 b 456 sum a b printf sumis d n sum 一 整型常量 整常数 按不同的进制区分 整型常量有三种表示方法 3 3整型数据 十进制数 220 560 45900八进制数 06 0106 011以0开始的数十六进制数 0 x123 0 xA3以0 x开始的数 二 整型变量1 整型数据在内存中的存放形式在内存中存储整数时 一般以其最高位 即最左边一位 表示数的符号 以0表示正 以1表示负 数值再以补码形式存放 正数的补码是 该数的二进制数负数的补码是 将该数的绝对值的二进制形式 按位取反再加1 例子 十进制数10的二进制形式为1010 若在内存中占16位 如图 取反再加1得 10的补码形式 2 整型变量的分类 在VC 6 0环境下 整型数据分类 如某程序的数据说明如下 main inta longb unsignedintc 3 整型变量的定义 a被定义为有符号整型变量 b被定义为有符号长整型变量 c被定义为无符号整型变量 4 整型常量的类型 3 4浮点型数据 一 浮点型常量 实数或浮点数 实数有二种表示形式 1 十进制小数形式 29 56 56 33 123 123 02 指数形式 适用于表示较大或较小的数 由小数部分 字母e或E 指数部分组成 例如 1 23e2表示1 23 10212 3e1表示12 3 101 1 23e 2表示 1 23 10 2 说明 1 绝对值小于1的实数 其小数点前面的零可以省略 如 123表示的是0 123 0015E 3表示的是 0 0015E 32 指数形式e前必须有数字 后边必须为整数 如 e3 1e3 5是不合法的实数3 一个实数可以有多种指数表示形式 如 123 0可表示为1 23E2 12 3E1 0 123E3 把1 23E2称为 规范化的指数形式 二 浮点型变量1 浮点型数据在内存中的存放形式浮点型数据在内存中是按指数形式存储的 如图 小数部分占的位数愈多 数的有效数字愈多 精度愈高指数部分的位数愈多 则能表示的数值范围愈大 2 浮点型变量的分类 常用的C编译系统对浮点型变量的分类情况 3 浮点型变量的定义 例子 如某程序的数据说明如下 main floatx y doublez x y被定义为单精度实型变量 4 浮点型常量的类型一般C语言编译系统将浮点型常量作为双精度来处理 但当一个实型常量赋给一个float型 double型 longdoubl型时 实型常量类型会被强制转换 z被定义为双精度实型变量 例 include stdio h main floata b a 123456 789e5 b a 20 printf b f n b 运行结果 b 12345678848 000000 为什么 因为一个单精度的浮点型数据只能保证的有效数字是7位 后面的数字是无意义的 浮点数的比较问题 1 浮点数的精度和有效位影响比较的正确性 如 floatf1 7 123456789 floatf2 7 123456785 printf 是否相等 f1 f2 notsame n same n floatg 1 0 3 0 doubled 1 0 3 0 printf 是否相等 g d notsame n same n 3 5字符型数据 一 字符常量C字符常量是用单引号括起来的一个字符 如 a A 9 其中 只作定界符使用 并不表示字符常量本身 在C语言中还有一种以 开头的特殊字符 称为转义字符 其含义如下表 如 101 x41 A 表示同一个字符但 1 和 1 表示不同的字符 例 include stdio h main printf abc r 123 n printf goodbye printf 1 n 二 字符变量字符变量是用来存放字符常量 1 字符变量的定义 include stdio h main charc1 c2 c3 c1 a c2 b c3 c c1 c2 c3定义为字符型变量 c1 c2 c3各存放字符a b c 2 字符数据在内存中的存储形式字符数据是以其ASCII码值的二进制形式存于内存 且一个字节存放一个字符 故它的存储形式与整数的存储形式类似 C语言使字符型数据和整型数据之间可以通用 include stdio h main charc1 c2 c1 a c2 b printf c c c1 c2 c1 c2在内存中的存储形式 int main charc1 c2 c1 a c2 b printf c c c1 c2 d d 可以看到 字符型数据和整型数据之间可以通用 它们既可以用字符形式输出 用 c 也可以用整数形式输出 用 d 但两者只在整数0 255范围内通用 三 字符串常量由一对双引号括起来的一串字符 如 A 12 5 China 1 字符串在内存中的存储形式 C规定 在每一个字符串的结尾加一个 字符串的结束标志 以便系统能判断字符串是否结束 并以字符 0 作为字符串的结束标志 如 China 在内存中实际上占6个字节 但输出时不输出 0 如执行语句 printf China 后只屏幕上输出China 3 6运算符和表达式 运算是对数据加工的过程 记述各种不同运算的符号称为运算符 参加运算的数据称为运算量或操作数 用运算符把运算量连接起来的式子称为运算表达式 简称表达式 它是C语言程序中可执行语句的一种 运算量可以是常量或变量 一 算术运算符和算术表达式 1 单目和双目运算双目运算 或多目操作 是指两个操作数 或多个操作数 进行操作 说明 1 两个整数相除结果为整数 舍去小数部分 如 15 2结果是71 2结果是 2 对于取模运算符 两侧只能是整型数据如 15 2结果是1但 floata b a 7 5 b 3 a b 单目运算 是指对一个操作数进行操作 自加 自减运算符 1 i i 在使用i之前 先使i的值加 减 1 2 i i 在使用i之后 使i的值加 减 1 main inti j i 3 j i printf i d j d i j 输出结果为 i 4 j 4 main inti j i 3 j i printf i d j d i j 输出结果为 i 4 j 3 include stdio h main inti i 3 printf d n i printf d n i include stdio h main inti i 3 printf d n i printf d n i 输出结果为 32 输出结果为 22 优先级结合方向 取负 自右至左 自左至右 自左至右 2 运算符的优先级与结合性 例如 a a 注意 1 运算符只能用于变量 而不能用于常量 或表达式 如 5 a b 是不合法 2 取负 的结合方向是 自右至左 如 main inti 3 j j i printf d d n i j 输出结果为 4 33 表达式的副作用 P59 练习题 1 设a 2 则执行语句k a a 后的k值为多少 k 6 均为6 1 k 6a 5 2 k 12a 5 2 设a 2 b 9 则表达式a b a 的值为多少 表达式a b a 的值为多少 3 设a 2 若执行语句k a a a 后的k值为多少 若执行语句k a a a 后的k值为多少 注 C语言允许在定义变量时同时使变量初始化 但要对几个变量赋以同一个初值时 须逐个赋值 如 不能写成 inta b 5 应写成 inta 5 b 5 二 赋值运算符和赋值表达式1 简单赋值运算符 2 结合方向 自右至左作用 表达式右边数据赋给左边变量如 inta b a b 5 3 复合赋值运算符 例 a 3等价于a a 3x y 8等价于x x y 8 4 算术运算符优于赋值运算符 例 若a是int型变量 且a的初值是12 则计算下面表达式后a的值是 a a a a 264 例 a 3 5 b a 4 三 逗号运算符和逗号表达式 这个表达式的值是60 a 3 b 5 b a c b 5 这个表达式的值是40 形式 表达式1 表达式2 表达式n顺次求解表达式1 表达式2 最后求解表达式n 逗号表达式的值为表达式n的值 先 后 四 运算顺序 如 设有说明 charw intx floaty doublez 则表达式w x z y的值的数据类型double int 1 系统自动转换规则 隐式转换

温馨提示

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

评论

0/150

提交评论