




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章数据类型 运算符与表达式 学习目标了解c语言的数据类型理解常量与变量掌握几种基本的数据类型 整型 浮点型 字符型掌握不同类型数据间的混合运算掌握算术 赋值 逗号运算符 难点符号常量变量命名字符常量与字符串常量自增 自减运算符逗号运算符 3 1C语言的数据类型 算法处理的对象是数据 而数据是以某种特定的形式存在的 不同的数据之间往往还存在某些联系 数据结构指数据的组织形式 不同的计算机语言所允许定义和使用的数据结构是不同的 处理同一类问题 如果数据结构不同 算法也会不同 在考虑算法时 必须注意数据结构 3 1C语言的数据类型 3 2常量与变量 3 2 1常量和符号常量常量 在程序运行过程中 其值不能被改变的量 常量类型字面常量 直接常量 从字面形式即可判别 1 0 1 2整型常量1 1 1 1 4 6实型常量 a d 字符型常量 3 2 1常量和符号常量 符号常量 用一个标识符代表一个常量 格式 define常量名字面常量 definePRICE30 definePI3 1415926 3 2 1常量和符号常量 例 从键盘输入圆的半径 计算并输出圆面积与周长 include definePI3 14voidmain floatr 0 s 0 c 0 scanf f 3 2 1常量和符号常量 使用符号常量的好处 含义清楚一改全改注意 作为常量 符号常量的值在其作用域内不能改变 也不能再被赋值 习惯上 符号常量名用大写 3 2 2变量 变量 程序运行期间值可以改变的量 变量在内存中占据一定的存储单元 在存储单元中存放变量的值 一个变量有一个变量名 注意变量名和变量值的区别 变量名是一个符号地址 在程序编译时由系统给每个变量名分配一个内存地址 在程序中从变量中取值 实际上是通过变量名找到相应的内存地址 从其存储单元中读取数据 3 2 2变量 标识符 用来标识变量 符号常量 函数 数组 类型等数据对象的有效字符序列 简单的说 标识符就是一个名字 C语言规定 标识符只能由字母 数字或下划线组成 且第一个字符必须为字母或下划线 正确 zzia zzia123 zzia zzia 123错误 zzia 123zzia123 zzia 123 3 2 2变量 注意 C语言区分大小写 大写字母和小写字母被认为是两个不同的字符 Zzia与zzia是不同的标示符变量名不能与关键字相同 一般变量名用小写字母表示 不同系统对标识符的长度规定不同 假如长度超出规定长度 超出部分将不被识别 student name与student number标识符的命名应做到见名知意 3 2 2变量 变量必须先定义 后使用 目的 保证程序中变量名使用正确 为变量指定类型 在编译时系统为其分配相应的存储单元 编译时 可以对变量将进行的运算进行合法性检查 3 3整型数据 3 3 1整型常量的表示方法整型常量即整常数 C语言中整常数可以用以下三种形式表示 十进制整数八进制整数 以数字0开头012 相当于十进制数10十六进制整数 以0 x开头 0 x12 相当于十进制数 18 3 3 2整型变量 1 整型数据在内存中的存放形式整型数据在内存中是以二进制形式存放的 整型变量在内存中占2个字节 基本整型 inti i 3 注意 不同的编译系统为整型数据分配的字节数是不同的 VisualC 6 0分配4个字节 3 3 2整型变量 数值是以补码表示的 正数的补码和其原码形式相同 10的补码0000000000001010求负数的补码 将该数的绝对值的二进制形式按位取反再加1 求 10的补码 绝对值 10二进制 0000000000001010取反 1111111111110101加1 1111111111110110 3 3 2整型变量 整数的存储单元中 最左面一位表示符号 如果为0 表示数值为正 如果位1 表示数值为负 整型变量的取值范围 32768 32767 即 215 215 1 3 3 2整型变量 2 整型变量的分类基本类型符为int 根据数值的范围可分为基本整型 短整型和长整型 基本整型 int短整型 shortint或short长整型 longint或long 3 3 2整型变量 2 整型变量的分类在实际应用中 变量的值常常是正的 为了充分利用变量的表数范围 可将变量定义为无符号类型 对以上三种类型都可以加上unsigned 指定为无符号数 这样存储单元中所有的二进制位都用作存放数本身 不包括符号 inta unsignedinb a的数值范围为 32768 32767 b的数值范围为0 65535 3 3 2整型变量 2 整型变量的分类C语言并没有规定各类数据所占内存的字节数 只要求long型数据长度不短于int型 short型不长于int型 具体由编译系统决定 3 3 2整型变量 3 整型变量的定义对变量的定义 通常放在函数开头部分的声明部分 例3 2 include stdio h voidmain inta b c d unsignedu a 12 b 24 u 10 c a u d b u printf d d n c d 3 3 2整型变量 4 整型数据的溢出 includevoidmain inta b a 32767 b a 1 printf d d a b 输出 32767 32768 3 3 3整型常量的类型 1 值在 32768 32767之间的 认为是int型 可以赋给int型和longint型变量 2 值超出上述范围 认为是长整型 可以赋给longint型变量 3 如果short和int在内存中长度相同 int型常量也可以赋给shortint型变量 3 3 3整型常量的类型 4 一个整型常量后面加一个字母u或U 认为是unsignedint型 5 一个整型常量后面加一个字母l或L 认为是longint型 3 4浮点型数据 3 4 1浮点型常量的表示方法浮点数即实数 有两种表示形式 十进制小数形式指数形式 3 4 1浮点型常量的表示方法 2 指数形式如123 456可表示为1 23456e2 规范化的指数形式 12 3456E1 0 123456e3注意 e E 之前必须有数字且e E 后面必须为整数一个浮点数在用指数形式输出时 是按规范化的指数形式输出的 3 4 2浮点型变量 1 浮点型变量在内存中的存放形式一个浮点型数据在内存中占4个字节 单精度浮点型 按指数形式存储 系统把浮点型数据分成小数和整数两部分 分别存放 3 4 2浮点型变量 2 浮点型变量的分类单精度 float双精度 double长双精度 longdouble 3 4 2浮点型变量 3 浮点型数据的舍入误差浮点型变量的有效数字位数有限 includevoidmain floata b a 123456 789e5 b a 20 printf f n b 3 4 3浮点型常量的类型 C编译系统将浮点型常量作为双精度来处理 计算 f 2 456789 4523 65系统将2 456789和4523 65按双精度数据存储并计算 得到双精度结果 然后取前7位赋给f 如果在数字的后面加字母f或F 如1 65f 系统会按单精度处理 一个浮点型常量可以赋给一个float型 double型和longdouble变量 系统根据变量的类型截取相应有效长度 3 5字符型数据 3 5 1字符常量用单撇号括起来的一个字符 如 a b A 注意 a 和 A 是不同的字符常量 转义字符 以 开头的字符常量 注意表3 3 n ddd xhh 104 表示什么 x44 表示什么 3 5 2字符变量 字符变量 用于存放字符常量 只能存放一个字符 在内存中占1个字节 字符变量的定义格式 char变量名charc1 c2 字符变量的赋值c1 a c2 n 3 5 3字符数据在内存中的存储形式及使用方法 将一个字符常量放到一个字符变量中 实际上是把该字符的ASC 代码放到存储单元中 由于字符数据的存储形式与整数相同 所以字符数据和整型数据之间可以通用 一个字符数据可以以字符形式输出 也可以以整数形式输出 也可以对字符数据进行算术运算 includevoidmain charc1 c2 c1 97 相当于c1 a c2 98 相当于c2 b printf c d n c1 c1 printf c d n c2 c2 注意 字符数据只能存放0 255内的整数 includevoidmain charc1 c2 c1 a 3 c2 a 8 5 printf c d n c1 c1 printf c d n c2 c2 c1的值是什么 例3 7 includevoidmain charc1 c2 c1 a c2 b c1 c1 32 c2 c2 32 printf c c n c1 c2 ASCII码表中 小写字母比对应的大写字母的值大32 3 5 4字符串常量 字符串常量 用一对双撇号扩起来的字符序列 howareyou fine thankyou 可以输出字符串 printf howareyou 3 5 4字符串常量 不要将字符常量与字符串常量混淆 字符串结尾有一个字符串结束标志 0 这是由系统自动加上的 china 在内存中占6个字节 a 占几个字节 a 占几个字节 C语言中没有字符串变量 如果想把字符串常量存放在变量中 需要使用字符数组 3 6变量赋初值 程序中常需要对一些变量预先设置初值 称作变量初始化 C语言允许在定义变量的同时对变量初始化 inta 3 floatf 3 56 charc a inta b c 5 inta 3 b 3 c 3 初始化不是在编译阶段完成的 而是在程序运行时执行该函数时进行的 inta 3 相当于 inta a 3 3 7各类数值型数据间的混合运算 整型 浮点型 字符型数据间可以进行混合运算 运算时 不同类型的数据要先转换成同一类型 这由系统自动完成 转换方向 图3 10inti floatf doubled longe 计算 10 a i f d e结果为double型 运算中 如果有一个数为实数 则结果为double型 为什么 3 8算术运算符和算术表达式 3 8 1C运算符简介C语言的运算符类型较多 3 8 2算术运算符和算术表达式 1 基本的算术运算符 两个整数相除的结果为整数 多数机器采取向零取整的方法 5 3 1 5 3 1 两侧均应为整型数据 7 4 3 includevoidmain inti floats 0 for i 1 i 100 i s s 1 i printf f n s 运算结果是什么 3 8 2算术运算符和算术表达式 2 算术表达式和运算符的优先级与结合性算术表达式 用算术运算符和括号将运算对象连接起来的 符合C语法规则的式子 运算对象包括常量 变量 函数等 C语言规定了运算符的优先级和结合性 在表达式求值时 先按运算符的优先级高低次序执行 然后按规定的 结合方向 处理 运算符的结合方向 左结合 右结合 3 8 2算术运算符和算术表达式 3 强制类型转换运算符可以用强制类型转换运算符将一个表达式转换成所需类型 一般形式为 类型名 表达式 double a int x y float 5 3 注意 表达式应该用括号括起来 int x y 与 int x y不同 3 8 2算术运算符和算术表达式 在强制类型转换时 得到一个所需类型的中间变量 原来变量的类型未发生变化 includevoidmain floatx inti x 3 6 i int x printf x f i d n x i 3 8 2算术运算符和算术表达式 数据类型转换有两种 系统自动进行的类型转换 强制类型转换 3 8 2算术运算符和算术表达式 4 自增 自减运算符作用 使变量的值加1或减1 i i 在使用i之前 先使i的值加1或减1i i 在使用i之后 使i的值加1或减 1 includevoidmain inta 1 b 1 c d c a d b printf a d b d c d d d n a b c d 3 8 2算术运算符和算术表达式 注意 自增运算符和自减运算符只能用于变量 不能用于常量或表达式 自增运算符和自减运算符的结合方向是自右向左 自增运算符和自减运算符常用于循环语句 3 8 2算术运算符和算术表达式 负号运算符 优先级略低于自增 自减运算符 结合性自由向左 d 相当于 d intd 1 printf d n d 输出 1 printf d d 输出 2 3 9赋值运算符和赋值表达式 1 赋值运算符 把一个数据赋给一个变量 2 类型转换 如果运算符两侧数据类型不一致 在赋值时自动进行类型转换 3 9赋值运算符和赋值表达式 2 类型转换 将浮点型数据赋给整型变量时 将舍弃小数部分 includevoidmain inta 12 89 printf d n a 3 9赋值运算符和赋值表达式 2 类型转换 将整型数据赋给浮点型变量时 数值不变 但以浮点数形式存储到变量中 includevoidmain floata 12 printf f n a 3 9赋值运算符和赋值表达式 2 类型转换 将字符型数据赋给整型变量时 将字符数据放到整型变量的低8位中 3 9赋值运算符和赋值表达式 2 类型转换 将一个double型数据赋给float变量时 截取其前面7位有效数字 includevoidmain floata 123456789 89 printf f n a 3 9赋值运算符和赋值表达式 2 类型转换 将一个整型数据赋给一个char型变量 只将其低8位存放到char型变量中 includevoidmain chara 256 printf d n a 3 9赋值运算符和赋值表达式 3 复合的赋值运算符在 前加上其它运算符 构成复合的运算符 a b等价于a a bx y 8等价于x x y 8 C语言采用复合运算符的目的 简化程序提高编译效率 3 9赋值运算符和赋值表达式 4 赋值表达式赋值表达式 由赋值运算符将一个变量和一个表达式连接起来的式子 一般形式 a 2 3赋值表达式的求解过程 先求赋值运算符右侧 表达式 的值 然后赋给左侧的 变量 3 9赋值运算符和赋值表达式 4 赋值表达式赋值表达式左侧的标识符称为左值
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年地籍测量员技能鉴定高级面试重点题
- 2025年环保安全生态保护题集答案
- 2025年企业人力资源管理师三级考试预测题
- 2025年美容美发技能大师挑战赛试题及答案解析
- 2025年教育心理学家专业能力评估试题及答案解析
- 课件中文字的处理
- 2025年建筑师注册考试试题及答案解析
- 2025年建筑钢结构工程安全监理员职业资格考试试题及答案解析
- 2025年环境治理工程师职业技能考试试题及答案解析
- 2025年国际财务分析师资格考试试题及答案解析
- 2025年河北高考生物试卷真题答案详解及备考指导
- 宁德新能源verify测试题库
- 幼儿急症救助
- 期末复习放射物理与防护大专习题集
- 主通风机司机培训教材课件
- 酒店运营管理课件
- 2022年红河产业投资集团有限公司招聘笔试题库及答案解析
- 肺心病(课)课件
- 中国烟草PPT模板
- 急性淋巴管炎的护理查房
- 江苏省综合评标专家库题库
评论
0/150
提交评论