C语言第3章数据类型、运算符与表达式.ppt

上传人:max****ui 文档编号:8614724 上传时间:2020-03-30 格式:PPT 页数:62 大小:434.31KB
返回 下载 相关 举报
C语言第3章数据类型、运算符与表达式.ppt_第1页
第1页 / 共62页
C语言第3章数据类型、运算符与表达式.ppt_第2页
第2页 / 共62页
C语言第3章数据类型、运算符与表达式.ppt_第3页
第3页 / 共62页
点击查看更多>>
资源描述
1 第三章数据类型 运算符与表达式3 1C的数据类型3 2常量与变量3 3整型数据3 4实型数据3 5字符型数据3 6变量赋初值3 7各类数值型数据间的混合运算3 8算术运算符和算术表达式3 9赋值运算符和赋值表达式3 10逗号运算符和逗号表达式 2 3 1C的数据类型程序 算法 数据结构算法 求解问题的方法和步骤 数据结构 数据对象 相互关系和构造方法 说明 高级语言的数据结构是通过数据类型来体现数据间的组织形式和结构关系的 3 整型 6类 基本类型浮点型 2类 字符型数组C的数据类型构造类型结构体共用体指针类型空类型 单精度型 双精度型 4 3 2常量与变量1 常量何谓常量 程序执行过程中其值不能被改变的量 例如 a 100 b a 12 常量类型 以字面形式区分 例如 123 基本整型 3 5 实型 123L 长整型 A 字符型 符号常量 用标识符代表一个常量 5 符号常量的定义 例 definePRICE30 定义符号常量 main intnum1 num2 num3 cost1 cost2 cost3 cost1 num1 PRICE 引用符号常量 cost2 num2 PRICE cost3 num2 PRICE 6 例 求圆柱体的顶面积 圆周长和圆柱体体积 definePI3 1415926main floatr h c s v printf Inputradiusandheight scanf f f 7 定义符号常量的意义 在程序中多处引用同一个常数时 采用符号常量便于参数的修改 增加了可读性 注意 1 符号常量名可用大写或小写字母 为了便于与变量名区分 通常用大写 2 在符号常量作用域内 不得出现符号常量被赋值现象 如 PRICE 20非法 8 2 变量何谓变量 程序运行过程中允许被改变的量 程序中用标识符标识每一个变量 C标识符构成规则 由大或小写字母 数字 下划线组成 且第一个字符必须是字母或下划线 标识符标识的对象 变量 数组 函数 符号常量等 标识符长度 MSC有效字符为8个 多余部分不予识别 TurboC隐含有效字符为32个 可自行调整 9 变量命名举例 合法 sum SUM Average toal cost 1 1非法 for num 1 2a 8L ABC 注意 1 C变量名中字母可大小写 但有大小写之分 SUM sum Sum被视为不同的变量 2 有效字符相同的变量名被视为是同一个变量 如MSC中student name与student number 3 在实际应用中命名应尽量见名知义 4 长名惯用方法 CharToString GetSum5 C中变量必须先定义后引用 10 与变量有关的概念 变量三要素 变量名 变量地址 变量值 变量的地址 变量的指针 给变量分配的存储单元第一个字节的地址 例如 intn m n 10 m 25 n的地址 202m的地址 204 11 变量被赋值的物理意义是向它的存储单元写数 变量可多次被赋值 新值将覆盖旧值 例如 n 10 赋值 破坏性的 n 45 变量被引用的物理意义是从存储单元中读数 例如 n 10 m n 2 引用 非破坏性的 两变量内容的交换可借助另一个变量或利用运算关系实现 12 5 10 例如 实现两个变量内容的交换方法1 利用中间变量实现inta 5 b 10 t t a a b b t 方法2 利用运算关系a a b 5 10 15 a b a b 15 10 5 b a a b 15 5 10 a 10 a t b 5 5 13 3 3整型数据1 整常量有三种表示形式 十进制 八进制 以数字0开头 十六进制 以0 x或0X开头 其中0 数字0例 53 10 127 10 0123 8 0177 8 0 x53 16 0X7F 16 14 2 整型变量1 分类 分为六类 15 在TurboC 16位系统 中 16 2 整型变量的定义C变量定义的一般形式 适合于任何类型 存储类别 类型标识符 变量名表 其中 存储类别 auto 隐含 变量初值不定 static 初值自动为0 变量名表 多个变量以逗号分隔 变量定义位置 通常在函数体内执行语句之前 17 例 main inti j k staticintm longa b 5 unsignedu i 20 b i 20 2byte 4byte 2byte i初值不定j初值不定K初值不定a初值不定b初值为5u初值不定m初值为0 a b i 18 3 整常量类型int型常数 32768 32767视为int常数 可赋给int long型变量 long型常数 在 2147483648 2147483647之内 但超出 32768 32767的数及带后缀l L的视为long型常数 可赋给long型变量 2147483648 327680327672147483647 longintlong 带后缀l或L的数 long 19 4 整型量的溢出若一个变量无法容纳下要存入的数 这种现象称为溢出 溢出将导致数据存储错误 在运算过程中也有可能产生溢出导致运算结果错 因此程序设计中应避免产生溢出 例 inta b a 65538 65538 长整型 b 123 456 printf a d b d a b a 2 b 9448 溢出的错误结果 YS 20 溢出原因 位数或范围超出1 a 65538 65538 10000000000000010 2a 只存入后16位2 b 123 456 123 456 56088 1101101100011000 2b 9448的补码 0000000000000010 1101101100011000 21 解决办法 longa b a 65538 b 123 456 printf a ld b ld a b a 65538 b 56088 正确 22 3 4实型数据1 实型常量有两种表示形式 十进制小数 十进制指数 例 123 00 123 14 20 00 123 例 表示12亿3千万数学方式 1230000000或12 3 108程序中 1230000000 0 小数形式的实常数 12 3e 8 1 23e9 123e7 指数形式 23 指数形式说明 12 3e 8指数部分数值部分指数部分 e表示以10为底 可大 小写 8为指数值 幂 只能是整数 指数符号为正可省略 数值部分 可是小数或整数 24 例 表示电子质量0 91 10 30小数形式 0 0000 0091指数形式 0 91e 30 0 91E 30 91e 32可见 在程序中表示较大或较小数时 采用指数形式简洁 不易书写错 注意 一个数可写成多种指数形式 但存储格式一致 2 指数部分不可单独代表常数 如表示108 e 8被编译系统理解为变量e加8 正确表示 1 0e8 1e8 25 2 实型变量 分为两类 26 回顾浮点存储格式 例如 floata 5 5 实数 5 5的浮点格式机器数 5 5 10 101 1 2 23 0 1011 2a 阶符阶码数符尾数 1bit7bit1bit23bit 27 3 5字符型数据扩展ASCII码字符分类 P364 28 1 字符常量在程序中有两种表示形式 单引号括起来的一个字符 适合于可键入字符的表示 如 A 3 单引号中右斜杠开头的转义字符 适用于所有字符 通常用于控制字符和不可键入字符的表示 29 C特别规定的转义字符 30 例 输出一个字符序列 字符串 printf Howareyou n Howareyou 输出结果 光标位置 例 输出包含控制字符的字符串printf ab c t de rf tg n printf h ti b bj k f gde 为空格 h j k YS YS 31 2 字符变量 有两种类型 32 3 字符量的存储及引用例 charc1 c2 c1 A c2 c1 存储 字符的ASCII编码c1 若 c1按字符解读 字符Ac1按整数解读 65 33 C允许字符量与0 255之间的整形量互相通用 通用的范围包括 1 互相赋值2 I O格式符通用3 进行算术 关系运算 34 例 整型量 字符量互相赋值和格式符通用main charc inti c 97 c 01100001 i b i 0000000001100010 printf c d n c c printf c d n i i a 97b 98 35 例 字符量与整型量的算术运算main charc1 c2 c1 A c2 B c1 c1 32 c2 c2 32 printf c c c1 c2 ab 36 例 字符量与整型量的关系运算main charc1 scanf c a 输入A输出 37 4 字符串常量1 表示 由一对双引号括起来的字符序列 Howdoyoudo 长度 14 123 456 长度 7 a 长度 1 38 2 存储 双引号内每个字符占用一个字节 所有字符按顺序连续存储 自动在最后加入字串结束标志 空字符例 0010000000000000空字符 名为NUL的控制字符其ASCII码值 0程序中表示 0 注意 空字符与空格字符是不同的字符 39 3 用途 给字符数组赋初值 在I O函数中作为格式字符串 例 printf PleaseInputa b scanf d d d YS 40 3 6变量赋初值在定义变量时给变量赋值叫做赋初值 例 inta 10 b 5 c 例 intx y z 0 编译时将指出错误可改为 intx y z x y 0 或 intx y z x y z 0 初始化变量 41 3 7各类数值型数据间的混合运算包括 整型常量 变量实型常量 变量混合运算字符型常量 变量例 若有如下定义inti floatf longl doubled 且每个变量已赋值 则混合表达式8 2 a i f d l合法 42 混合运算规则 1 通常类型相同直接运算 结果保持原类型 2 类型不同 系统自动转换为同一类型再进行运算 结果为转换后的类型 不同类型运算时的自动转换规则 高级doublefloatlongunsigned低级intchar short 转换方向 43 注意 因类型越高 数值范围越大 精度越高 因此这种转换无精度损失 是安全的 2 表达式中只要有一个实型量 单或双 表达式结果为双精度实型量 3 对变量而言 仅仅是将读出的变量值进行了转换 变量的类型和变量存储内容保持不变 ifi f 10 0 1 20 10 1 2 44 3 8算术运算符和算术表达式1 C算术运算符简介34种 13类 15个优先级 2个结合性 1 算术6 条件11 分量2 关系7 逗号12 下标3 逻辑8 指针13 函数调用4 位9 求字节数5 赋值10 强制类型转换 45 2 算术运算符和算术表达式1 基本算术运算符 加 取正 双目运算符 单目运算符 减 取负 双目运算符 单目运算符 乘 双目运算符 除 双目运算符 整除取余 双目运算符 46 注意 为复用运算符 如 inta b c a 5 b a 3 减 两个运算目标 c a 取负 一个运算目标 2 两整数相除结果仍为整数如 5 2 2 5 3 11 2 0123 10 12要依实际应用情况加以利用或避免 47 3 求余运算要求两运算元素均为整型 余数仍为整型 如 inta b c a 11 3 2 a b 5 a 1 b c b a 1 c c 123 10 分离出个位3 若有 a 11 0 3 编译时将视为语法错 48 2 算术表达式C表达式 由运算符 括号将运算元素连接起来的有值的式子 算术表达式 由算术运算符 括号将数值型的运算元素连接起来 其值为数值量的式子 其中 运算元素可为常量 变量 函数调用等 如 28 asin 1 0 10 y 49 注意 为保证表达式运算关系的正确性 需加入必要的括号 并注意括号的层次及配对关系 2 乘号不得省略 3 应避免整型量相除可能带来的不良影响 4 函数调用是以函数的返回值来参与运算的 50 3 算术运算符的运算优先级和结合性C运算符优先级 15个结合性 两个运算规则 C在处理表达式时 不同级别运算符的运算顺序按优先级别由高到低进行 同一级别运算符的运算顺序按本级别的结合性进行 结合性 左结合性 自左而右顺序右结合性 自右而左顺序 a b 4 51 C算术运算符优先级及结合性 1级 自左而右取负 2级 同为3级 自左而右 同为4级 自左而右如 100 a 2 b 3 0 52 4 强制类型转换运算符例 用强制类型转换进行匹配处理floata 11 0 intb b a 2 编译出错 修改后 b int a 2 注意被转换对象的范围 b int a 2 仍有错 53 强制类型转换运算一般形式 类型名 表达式 其值是被转换对象 可是常 变 表达式 类型转换运算符 2级 单目 强制类型转换的意义 当自动类型转换不能达到目的 人为强制转换 2 函数调用时 为了使实参 形参类型匹配 可采用强制类型转换 54 5 自增 自减运算符自增1 自减1 含义 i 前置自增 先自加1 后引用 i 后置自增 先引用 后自加1 i 前置自减 先自减1 后引用 i 后置自减 先引用 后自减1 意义 可提高执行效率 优先级2级 单目 自右而左 55 注意 只能对变量进行自增 自减运算 2 取负同为二级 结合性 自右而左 如 i 3 j i 3 j i 4 等效为 i 3 j i i i 1 56 3 9赋值运算符和赋值表达式1 赋值运算符 优先级14级 双目 自右而左 2 赋值表达式一般形式 变量 表达式其中 表达式 可是C任何形式的表达式 包括算术 条件 逗号 赋值等表达式 特殊形式 单独的常量 变量 函数调用 57 例 b 20c sin 1 0 d pow 2 b 2e a ba b 5 a b c d 0c b a 2 a b 10 c 2 58 3 赋值运算时的类型转换被赋值变量类型与表达式值的类型一致时 直接赋值 不一致系统自动以被赋值变量的类型为准进行转换 然后赋值 例 inti 10 j floatf doubled i i 5 5 i j i 3 56 8 j f 23 单精度23 0 f d j f 双精度31 0 d 59 4 复合赋值运算符在赋值运算符前加上其它双目运算符构成 算术复合赋值运算符 和赋值 差赋值 积赋值优先级14级 自右而左 商赋值 模赋值意义 提高编译效率 目标代码的质量 60 例 a 3 a a 3x 3 x x 3x y 8 x x y 8 x x y 8a b 3 a a b 3 a a b 3注意 复合赋值运算符针对右边整个表达式 例 a 6 a a a 1 60 a 61 3 10逗号运算符和逗号表达式1 逗号运算符 也称为顺序求值运算符 优先级15级 双目 自左而右 2 逗号表达式一般形式 表达式1 表达式2扩展形式 表达式1 表达式2 表达式n其中 各表达式是C合法的任何表达式 逗号表达式的值 最后一个表达式的值 例 a 3 5 b a 4 62 功能 实现多个表达式的计算或多个变量的赋值 两个表达式的比较 x a 3 6 3 18 x a 3x a 3 6 ax 3 表达式的值为18
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!