c第2章基本数据类型及表达式.ppt

上传人:max****ui 文档编号:8614505 上传时间:2020-03-30 格式:PPT 页数:55 大小:895.31KB
返回 下载 相关 举报
c第2章基本数据类型及表达式.ppt_第1页
第1页 / 共55页
c第2章基本数据类型及表达式.ppt_第2页
第2页 / 共55页
c第2章基本数据类型及表达式.ppt_第3页
第3页 / 共55页
点击查看更多>>
资源描述
问题提出 求学生成绩和以及平均成绩的例题中 学生成绩可以是整数 也可以是实数 如何确定其到底是什么类型的 在程序中 有些数据是变化的 有些却是固定不变的 如何设置这些数据 如何表示这些数据 C 中语句如何构成 其语法结构如何 如何使用运算符和表达式进行计算 第2章数据类型及表达式 要点 数据类型 常数 变量 运算符与表达式什么是数据类型 程序主要是对数据进行处理 首先要存储数据 用多大的空间存储数据 怎样存 进行什么运算根据数的特点决定数据类型根据处理方法决定选用常量或变量或数组同时要起名字 知道存贮结构根据数据类型决定采用的运算符与表达式同时要知道运算优先顺序和方向 第二章数据类型及表达式 2 1词法符号2 2基本数据类型2 3常量与变量2 4运算符与表达式 2 1词法符号P13 2 1 1字符集 2 1 2标识符 2 1 3关键字 2 1 1字符集 1 字符集 即程序中允许出现的符号 ASCII码字符集 每种程序设计语言都使用一些特定的字符来构造基本词法单位 这些字符构成的集合就叫做字符集 26个小写字母 a z 26个大写字母 A Z 10个数字 0 9 其他符号 空格 同一个符号在不同位置出现时有不同的含义例 3 2 p 符号单独使用与组合使用时含义不同例 与 与 不论何种语言 在写字符串时不受字符集限制 注意以下几点 字符集的字符必须是半角 ASCII码字符集 命名规则 以字母或下划线开头 后跟字母 数字 下划线组成的串 长度 标识符长度任意 C 编译器不同 例 name total sub 1 a11 A11合法2x sum1 s 1非法标识符 标识符 一个名字 由一串符号构成 作为标志与识别 常用来标识常量 变量 数据类型 函数等 2 1 2标识符 标识符 注意 在标识符里区分大小写字母例 nameNameNAME 一个标识符不能分行书写 习惯上取有意义的名字 如sum aver等 习惯上变量名 函数名常用小写字母 又叫保留字 Reservedword 是预先定义好的 被系统占用的标识符 具有特定的含义 注 一般标识符不能取关键字 2 1 3关键字 2 2基本数据类型 构造类型 基本类型 空类型 void 枚举型 类 class 基本型 int 短整型 short 长整型 long 单精度型 float 双精度型 double 长双精度型 longdouble 指针类型 无符号型 unsigned 无符号整型 unsignedint 无符号短整型 unsignedshort 无符号长整型 unsignedlong 基本数据类型 不同数据类型的存储位数不同 数的范围不同进行数据处理时 根据数的特点决定数据类型 2 3 1常量 整型常量实型常量字符常量字符串常量符号常量 常量 是指在程序运行过程中 其值不变的量 常量都具有一定的数据类型 由其表示方法决定 在程序中不必对常量进行任何说明就可以使用 主要有以下几种 2 3常量与变量 includevoidmain doubler s a cout r s 2 r 3 14 a r r 3 14 cout s s endl cout area a endl 数据是以常量或变量的形式来描述的 1 整型常量 整型常量 不带小数点 整型常量可用十进制 八进制和十六进制的形式表示 1 十进制整数 2 八进制整数 以数字0开头的 由数字0 7组成的常数 例如 0177 033等 而123 039则是不合法的八进制常数 3 十六进制整数 以数字0 x或0X开头的 由数字0 9A F 或a f 组成的常数 例如 0 x10 0 x3e而1a 0 xgf 20h则不合法 长整型常量 在十进制 八进制 十六进制表示的整型常量中 若末尾加上字母l或 L 则说明该常数为长整型常量 如 12l 034l 0 x3FL等 小数表示法 由符号 数字和小数点组成 必须有小数点 如 123 0 123指数形式 由尾符 尾数 阶码标志e E 阶符 整数阶码构成如 1 23e 345 6E5注 浮点常量总是以双精度 Double 形式出现 若要表示Float型常量 必须在实型常量后面加F或f 2 实型常量 又称浮点数 3 字符型常量 一般字符常量 键盘上有该符号例 b 转义字符常量 用来表示一些不可显示或无法从键盘键入的控制字符 以 引导的字符序列 单引号括起来的单个字符 值为其ASCII码值 单引号是定界符 不是常量本身的内容如 a A 2 注 0 与0不同 如 P17表2 3 n 表示回车换行 表示单引号 表示双引号 字符常数的存储方式 ASCII码值 占一个字节 如 A 对应的ASCII码值为 65 0101 0X41 01000001B 8位 A 65a 970 48 C 允许字符型数据参与数值运算 字符串常量 双引号括起来的一串字符例 3a9d s 2天津ABC 4 字符串常量 存储 在内存中依次存放每个字符的ASCII码 尾部自动加字符串结束标志 0 即 长度 为该串中含字符的个数 不含结束标志 0 上例串长度为 7 注 在字符串里 可以使用转义字符的书写方式 以下字符串含 A Sk3 错 A Sk3 例如 输出字符串A Sk3 例 字符串 HELLO 的内存表示 字符串结束标志 A Sk3 cout A Sk3 思考 a 与 a 的区别 3 能进行的运算不同 a r 5合法字符常量可以与整型数进行加 减运算 a r 5非法 字符常量与字符串常量的区别 1 表现形式不同字符常量用 定界符不同字符串常量用 2 内存中所占空间不同 a 字符常量 存储其ASCII码值 占据一个字节 a 字符串常量 占据两个字节 即 a与 0的ASCII码值 4 存放两者的变量不同字符常量用字符变量字符串常量用字符数组 5 符号常量 C 中常量可以是常数 也可以是代表固定不变的值的名字 符号常量 比如程序中经常用到某个常数 此时可以定义一个名字来表示此常数 以便改进程序的可读性 例如 计算圆面积或圆周长要用到3 1415926 不能直接用 可定义为符号常量 定义符号常量一般形式 const数据类型符号常量 表达式 例如 constdoublePI 3 1415926 constdoublePI error 一般用大写字母 includevoidmain doubler s a cout r s 2 r 3 14 a r r 3 14 cout s s endl cout area a endl includeconstdoublePI 3 14 voidmain doubler s a cout r s 2 r PI a r r PI cout s s endl cout area a endl 3 1415926 1 符号常量定义时必须初始化 如 constdoublePI PI 3 1415926 error 2 定义中 表达式 只能是常量表达式 不能含有变量和函数 注意 例 constintCOUNT 5 1 rightconstdoubleA1 5 sin x error 2 3 2变量 1 变量 指在程序运行过程中其值可以改变的量 2 变量要素 名字 类型和值 地址 3 C 程序中 变量的作用 用来存放数据使用变量前必须首先定义变量名和变量的数据类型 为此变量在内存中分配一定的存储单元 并将在该单元中存放变量的值 变量的类型不同占内存单元数不同 见P15表2 2存储字节数 变量的定义的一般格式 变量定义语句 数据类型名变量名表 基本类型关键字 char字符型int整型long长整型float浮点数double双精度数 多个变量之间用逗号 分隔 例 charc inti j k longl1 l2 floatx y z doublet1 t2 先定义 后使用 变量类型 决定为该变量分配多大的存储空间决定该变量可参与何种运算变量名 规则遵循标识符的命名规则 例 inti j k 变量值 存储空间内的值变量的地址 存储空间惟一的地址 i 3 j 5 3 5 4个字节 对变量的操作 存 赋值 和取 使用 i 3 j 5 k i j 取出i j的值 求和后存入k 8 inti 3 j 5 k i j 变量赋值与初始化 1 初始化 定义同时赋值 2 赋值 定义后用赋值运算符 给变量赋值 inti j k i 3 j 5 k i j 3 也可定义后用输入语句从键盘输入变量的值 inti j k cin i j k i j 注意 不能重复定义一个变量例 inta b c doublex y c 没有存放字符串的变量chara a d3 j 错 2 4运算符与表达式 2 4 2 算术运算符 2 4 4 逗号运算符 2 4 1 表达式 重要 2 4 5 类型转换 2 4 3 赋值运算符 操作数 运算符 圆括号 优先级 相邻两个运算符之间的运算顺序结合性 优先级相同时那个运算符起作用 左 右结合性 常量 变量 函数或其他表达式 改变运算符的运算次序 组成 值 书写 没有上 下标 分式 括号只能出现圆括号 乘号不能省略 例如 A 32 7 23 6 3 4 3 3 说明运算的含义 表达式 左结合 一个运算符对其操作数从左到右进行规定的运算 称此运算符是左结合的 右结合 与左结合相反 即 从右到左 式子运算符c 表达式结合性5 9 3 5 9 3左结合 5 6负号为右结合X 5 右结合 结合性举例 赋值运算符与赋值表达式 逗号运算符与逗号表达式 逻辑运算符与逻辑表达式 算术运算符与算术表达式 C 中常用的运算符及其表达式有以下几种 低 高 关系运算符与关系表达式 C 中常用的运算符及其表达式有以下几种 一 常用运算符与表达式 C 中常用的运算符和表达式有以下几种 3 求模运算 要求两个操作数必须均为整型 两个整数相除后的余数 其符号和被除数的符号相同 负号 二 算术运算符和算术表达式 算术运算符 p23表2 5 结合性 算术表达式中混有多种数据时 注意结果的类型 1 整数相除结果为整数 分子 分母值为0例3 5值为0 2 除数不能为0 单目 双目 双目 高 低 例 8 5运算结果 9 12运算结果 15 12运算结果 12 15 运算结果 39 312 常用的数学函数 include 式子c 表达式 a b c d a a a sinx sin x sqrt g cosx cos x exp x 算术表达式举例 include 注 字符型数据可以进行运算 charc1 c2 inti c1 A c2 c1 32 i c2 字符的ASCII码值与整型数据可以通用 可以相互赋值 占1个字节 65 97 97 小写字母a的ASCII码的值 防止整数溢出错误 例 shortinti 1000 j 1000 k k i j shortint类型数的范围是 32768 32767结果 k 1000 2000 1000000 32767产生整数溢出 但C 系统不报警 要引起注意 可改变i j k为long类型变量来解决 三 赋值运算符和赋值表达式 赋值表达式 赋值运算符 赋值过程 inta b a 2 4 3 8 类型不同要转换 a 6 b a 3 类型相同不需要转换a a b 先求表达式的值 转换类型 再赋值 优先级仅高于逗号表达式 从右向左 inta b b a 2 4 3 8 b a 2 4 3 8 注意赋值表达式的值和类型 当赋值号左右不一致时 要将表达式的值类型转换为变量的类型 右 左 由于赋值运算符是右结合性的 可不加括号 注意赋值运算符不是等于号 赋值运算符左边只能是变量名 不可以是常量或其他表达式x y z error3 a 7 error 读程序 写结果 include includevoidmain shortinti doubled longl floatf L d i f 20 3 cout f l d i endl 复合的赋值运算 格式 算术运算符复合 p26 例如 a 1 a 6 2 x y 3 inta 12 a a a a 例2 2输出赋值表达式的运算结果 includevoidmain inta b c d e 7 a b 1 c 5 d a a 1 d a b 等价于d d a b e c b 等价于e e c b cout a t b t c t d t e 运行结果为 21563 说明 使用赋值的目的是为了保存赋值号右边表达式的值 即保存计算结果 将计算结果保存到变量中 就可以在后面的操作中使用该值了 四 自增自减运算符与表达式 自增自减运算符 单目 区别 要求操作数必须是变量 自增自减表达式 i 先取值 后自加 等价于 i i 1 i先自加 后取值 等价于 i i 1 i先自减 后取值 等价于 i i 1i 先取值 后自减 等价于 i i 1 先自增减 再计算 i i先计算 再自增减i i 表达式的值与变量的值 程序段1 includevoidmain inti 1 j j i cout i t j 结果 22 i 与 i的区别举例 程序段2 include iostream h voidmain inti 1 j j i cout i t j 21 结果 include includevoidmain inti 3 j 2 intm n m i j cout m endl cout i j endl m i j cout m endl cout i j endl m i j cout m i j endl 例2 4自增 自减运算符的应用 表达式2 表达式n 功能 从第一个开始 左 依次计算每个表达式的值 最后 右 一个表达式的值即为逗号表达式的值 五 逗号运算符 p27 例 inta b c d 则 a 1 b a 2 c b 3值 表达式1 优先级别 最低为了将逗号表达式的值赋给变量 必须加圆括号 例 inta b c d d a 1 b a 2 c b 3 cout d endl 结果 d 6 思考一下各变量及逗号表达式的值X y z 3 2 3 X y z 3 2 3X y z 3 2 3 类型转换 问题提出 什么时候 为什么需要类型转换 进行双目运算时 要求两个操作数的类型必须相同 当运算符两边的操作数的数据类型不一致时 VC 系统要先转换为同一类型 然后再进行运算 即先转换 再运算 运算结果的类型同操作数的类型 两种类型转换的方法 自动类型转换 强制类型转换 char 系统自动转换 由编译系统自动完成 当操作数类型不同时系统进行的转换 小空间向大空间转换 1自动类型转换 箭头表示转换方向 A 32 7 23 6 5 3 int int double double 运算结果的类型为 2强制类型转换 类型名 操作数或类型名 操作数 这也是一个表达式 该表达式的值是把操作数的数据类型强行转换为前面指定的数据类型后的值 操作数 可以是常量 变量 函数 表达式若为表达式 则要用括号将表达式括起来 一般形式 例如 long 2 int 4 8 double 5 3 double 5 3 1 000000 1 666667 2L 4 使用强制类型转换运算符来实现 举例 includevoidmain doublex 5 6 inti i int x cout i i nx x n 运行结果 i 5x 5 6 说明x变量的类型没变 注意一 是一种运算 表达式的值类型转换 而操作数的类型不变 若为变量 不能改变变量的的数据类型 注意二 当操作数是表达式 用以下形式转换时 表达式应用括号括起来 数据类型 操作数例 int x y int x y 例 doublex 5 6 y 7 8 z z int x y 结果 x y 13 4x y为double型z 13转换 问题的引出doublef c c 5 9 F 32 0c double 5 9 F 32 0c double 5 9 F 32 0c 5 F 32 9 0c为实型数c F 32 5 9 0c为实型数 强制类型转换的应用例子 include includevoidmain doublei 3 9 j 2 7 intm m i j cout m endl m int i j cout m endl m int i j cout m endl 思考 设i 3 k i i i k i 设a 3 b a a b a 设a 3 b a a b a 设a 3 b a a b a 设a 3 b a a b a 读程序 写结果 includevoidmain inti 3 j 0 a a i j includevoidmain inti 3 j 0 a a i j i cout a i endl inti 3 a a i i inti 3 a a i i inti 3 a a i i 下列运算后 i a的值分别为多少
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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