第3章 数据类型、运算符与表达式.ppt_第1页
第3章 数据类型、运算符与表达式.ppt_第2页
第3章 数据类型、运算符与表达式.ppt_第3页
第3章 数据类型、运算符与表达式.ppt_第4页
第3章 数据类型、运算符与表达式.ppt_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

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

文档简介

第3章数据类型 运算符与表达式 程序 算法 数据结构 程序设计方法 语言工具和环境 3 1C的数据类型 数据类型 基本类型 构造类型 指针类型 空类型 void 字符型 char 数值类型 枚举类型 enum 数组类型 结构体类型 struct 共用体类型 union 整型 short int long unsigbed 实型 单精度型 float 双精度型 double 3 2常量与变量 常量的分类1 整型常量 如12 0 3为整型常量 2 实型常量 4 6 1 23为实型常量 3 字符常量 a d 字符常量 4 符号常量 具有含义清楚 见名知意 修改方便 一改全改的优点 常量 程序运行过程中不能被改变的量 在程序运行过程中 其值可以被改变的量称为变量 变量代表内存中具有特定属性的一个存储单元 它用来存放数据 这就是变量的值 在程序运行期间 这些值是可以改变的 变量名实际上是一个以一个名字对应代表一个地址 在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址 从变量中取值 实际上是通过变量名找到相应的内存地址 从该存储单元中读取数据 每个变量都必须有一个名字 变量名 变量命名遵循标识符命名规则 变量命名的规定 语言规定标识符只能由字母 数字和下划线三种字符组成 且第一个字符必须为字母或下划线 例 sum total month Student name lotus 1 2 BASIC li lingM D John 123 3D64 a b 注意 编译系统将大写字母和小写字母认为是两个不同的字符 建议变量名的长度最好不要超过8个字符 在选择变量名和其它标识符时 应注意做到 见名知意 即选有含意的英文单词 或其缩写 作标识符 要求对所有用到的变量作强制定义 也就是 先定义 后使用 整形数据 1 整型常量 整型常量即整常数 整常数有三种表示形式 1 十进制 2 八进制 以0头的数是八进制数 3 十六进制以0 x开头的数是16进制数 2 整形变量 整型数据在内存中的存放形式 二进制 根据占用内存字节数的不同 整型变量又分为 类 1 基本整型 类型关键字为int 2 短整型 类型关键字为short int 3 长整型 类型关键字为long int 4 无符号整型 整型变量的分类 注意 括号表示其中的内容是可选的 共六种 有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型 signed int signed short int signed long int unsignedintunsignedshort int unsignedlong int 3 3整型数据 整数类型的有关数据 类型类型说明符长度数的范围基本型int2字节 32768 32767短整型short2字节 215 215 1长整型long4字节 231 231 1无符号整型unsigned2字节0 65535无符号短整型unsignedshort2字节0 65535无符号长整型unsignedlong4字节0 232 1 整型变量的定义 变量说明的一般形式为 类型说明符变量名标识符 变量名标识符 inta b c a b c为整型变量 longx y x y为长整型变量 unsignedintp q p q为无符号整型变量 例3 2整型变量的定义与使用 includevoidmain inta b c d 指定 为整型变量 unsigned 指定 为无符号整型变量 12 24 10 printf 运行结果 例3 3整型数据的溢出 includevoidmain inta b a 32767 b a 1 printf d d n a b 说明 数值是以补码表示的 一个整型变量只能容纳 32768 32767范围内的数 无法表示大于32767或小于 32768的数 遇此情况就发生 溢出 运行结果 32767 32768 3 4浮点型数据 3 4 1浮点型常量的表示方法 两种表示形式 小数指数 0 1233e 3 注意 字母e 或E 之前必须有数字 且e后面的指数必须为整数 1e3 1 8e 3 123e 6 1e 3e3 2 1e3 5 e3 e 3 4浮点型数据 规范化的指数形式 在字母e 或E 之前的小数部分中 小数点左边应有一位 且只能有一位 非零的数字 例如 123 456可以表示为 123 456e0 12 3456e1 1 23456e2 0 123456e3 0 0123456e4 0 00123456e其中的1 23456e3称为 规范化的指数形式 3 4浮点型数据 3 4 2浮点型变量 1 浮点型数据在内存中的存放形式一个浮点型数据一般在内存中占4个字节 32位 与整型数据的存储方式不同 浮点型数据是按照指数形式存储的 系统把一个浮点型数据分成小数部分和指数部分 分别存放 指数部分采用规范化的指数形式 3 4浮点型数据 2 浮点型变量的分类浮点型变量分为单精度 float型 双精度 double型 和长双精度型 longdouble 三类形式 例3 4浮点型数据的舍入误差 includevoidmain floata b a 123456 789e5 b a 20 printf f n b 说明 一个浮点型变量只能保证的有效数字是7位有效数字 后面的数字是无意义的 并不准确地表示该数 应当避免将一个很大的数和一个很小的数直接相加或相减 否则就会 丢失 小的数 运行结果 123456 789e5 3 4浮点型数据 3 4 3浮点型常量的类型C编译系统将浮点型常量作为双精度来处理 例如 f 2 45678 4523 65系统先把2 45678和4523 65作为双精度数 然后进行相乘的运算 得到的乘也是一个双精度数 最后取其前7位赋给浮点型变量f 如是在数的后面加字母f或F 如1 65f 654 87F 这样编译系统就会把它们按单精度 32位 处理 3 5字符型数据 3 5 1字符常量 1 用单引号包含的一个字符是字符型常量 2 只能包含一个字符 例 a A 1 abc a 字符型数据 用一对单引号括起来的单个字符 称为字符常量 字符可以是字符集中任意字符 但数字作为字符型参与数值运算时数字的值就不是它的ASCII值 语言还允许使用一种特殊形式的字符常量 就是以反斜杠 开头的转义字符 字符变量的类型关键字为char 一般占用1字节内存单元 字符变量用来存储字符常量 将一个字符常量存储到一个字符变量中 实际上是将该字符的ASCII码值 无符号整数 存储到内存单元中 可作为整数和字符两种形式输出 可对字符进行整数运算 ASCII码值 其它如下表 字符形式 n t v b r f ddd xxh 功能 换行 横向跳格 即跳到下一个输出区 竖向跳格 退格 回车 走纸换页 反斜杠字符 单引号 撇号 字符 1到3位8进制数所代表的字符 1到2位16进制数所代表的字符 例3 6向字符变量赋以整数 includevoidmain charc1 c2 c1 97 c2 98 printf c c n c1 c2 printf d d n c1 c2 说明 在第 和第4行中 将整数 和 分别赋给c1和c2 它的作用相当于以下两个赋值语句 c1 c2 因为 a 和 b 的ASCII码为 和 运行结果 9798 例3 7大小写字母的转换 includevoidmain charc1 c2 c1 a c2 b c1 c1 32 c2 c2 32 printf c c c1 c2 说明 程序的作用是将两个小写字母a和b转换成大写字母A和B 从 代码表中可以看到每一个小写字母比它相应的大写字母的 码大 语言允许字符数据与整数直接进行算术运算 运行结果 3 5字符型数据 说明 有些系统 如TurboC 将字符变量定义为signedchar型 其存储单元中的最高位作为符号位 它的取值范围是 128 127 如果在字符变量中存放一个ASCII码为0 127间的字符 由于字节中最高位为0 因此用 d输出字符变量时 输出的是一个正整数 如果在字符变量中存放一个ASCII码为128 255间的字符 由于在字节中最高位为1 用 d格式符输出时 就会得到一个负整数 字符串常量 字符串常量是用一对双引号括起来的若干字符序列 C语言规定 在存储字符串常量时 由系统在字符串的末尾自动加一个 0 作为字符串的结束标志 a 是字符常量 而 a 是字符串常量 不能将一个字符串赋给一个字符变量 C中没有字符串变量 需要用字符数组存放字符串 C规定 可以在定义变量的同时给变量赋初值 3 6变量赋初值 1 语言允许在定义变量的同时使变量初始化 如 inta 3 指定 为整型变量 初值为 floatf 3 56 指定 为浮点型变量 初值为 56charc a 指定 为字符变量 初值为 a 3 6变量赋初值 2 可以使被定义的变量的一部分赋初值 如 inta b c 5 表示指定 为整型变量 但只对 初始化 c的初值为 3 如果对几个变量赋以同一个初值 应写成 inta 3 b 3 c 3 表示 的初值都是 不能写成 inta b c3 注意 初始化不是在编译阶段完成的而是在程序运行时执行本函数时赋初值的 相当于有一个赋值语句 各类数值型数据间的混合运算 整型 单精度型 双精度型数据可以混合运算 不同类型的数据要先转换成同一类型 然后进行运算 转换规则如图 箭头只表示转换方向 并不是依次转换 转换过程是自动完成的 3 8C运算符简介 运算符 狭义的运算符是表示各种运算的符号 C语言运算符丰富 范围很宽 把除了控制语句和输入 输出以外的几乎所有的基本操作都作为运算符处理 所以C语言运算符可以看作是操作符 C语言丰富的运算符构成C语言丰富的表达式 是运算符就可以构成表达式 运算符丰富 表达式丰富 灵活 在C语言中除了提供一般高级语言的算术 关系 逻辑运算符外 还提供赋值运算符 位操作运算符 自增自减运算符等等 甚至数组下标 函数调用都作为运算符 运算符类别 C中各类运算符的优先级 初等运算符 单目运算符 类型 算术运算符 关系运算符 逻辑运算符 条件运算符 赋值运算符 逗号运算符 3 8算术运算符和算术表达式 3 8 2算术运算符和算术表达式 1 基本的算术运算符 加法运算符 或正值运算符 如 减法运算符 或负值运算符 如 乘法运算符 如 除法运算符 如 模运算符 或称求余运算符 两侧均应为整型数据 如 的值为 3 8算术运算符和算术表达式 2 算术表达式和运算符的优先级与结合性基本的算术运算符 用算术运算符和括号将运算对象 也称操作数 连接起来的 符合 语法规则的式子 称为 算术表达式 运算对象包括常量 变量 函数等 例如 5 a 是一个合法的表达式 语言规定了运算符的优先级和结合性 在表达式求值时 先按运算符的优先级别高低次序执行 例如先乘除后加减 规定了各种运算符的结合方向 结合性 算术运算符的结合方向为 自左至右 即先左后右 3 8算术运算符和算术表达式 强制转换 强制转换是通过类型转换运算符来实现 一般形式 类型说明符 表达式功能 把表达式的结果强制转换为类型说明符所表示的类型 int a将a的结果强制转换为整型量 int x y 将x y的结果强制转换为整型量 float a b将a的内容强制转换为浮点数 再与b相加 无论隐式转换 强制转换都是临时转换 不改变数据本身的类型和值 3 8算术运算符和算术表达式 4 自增 自减运算符作用是使变量的值增 或减 如 在使用 之前 先使 的值加 减 在使用 之后 使 的值加 减 3 8算术运算符和算术表达式 i 与 i的区别 是先执行 后 再使用 的值 是先使用 的值后 再执行 例如 i的值先变成4 再赋给 j的值均为 先将i的值3赋给 的值为 然后 变为 3 8算术运算符和算术表达式 注意 1 自增运算符 自减运算符 只能用于变量 而不能用于常量或表达式 2 和 的结合方向是 自右至左 自增 减 运算符常用于循环语句中使循环变量自动加 也用于指针变量 使指针指向下一个地址 3 8算术运算符和算术表达式 5 有关表达式使用中的问题说明 ANSIC并没有具体规定表达式中的子表达式的求值顺序 允许各编译系统自己安排 例如 对表达式a f1 f2 并不是所有的编译系统都先调用f1 然后调用f2 在有的情况下结果可能不同 有时会出现一些令人容易搞混的问题 因此务必要小心谨慎 3 8算术运算符和算术表达式 语言中有的运算符为一个字符 有的运算符由两个字符组成 为避免误解 最好采取大家都能理解的写法 例如 不要写成i j的形式 而应写成 i j的形式 3 8算术运算符和算术表达式 在调用函数时 实参数的求值顺序 标准并无统一规定 例如 的初值为 如果有下面的函数调用 printf i 在有的系统中 从左至右求值 输出 在多数系统中对函数参数的求值顺序是自右而左 函数输出的是 以上这种写法不宜提倡 最好改写成j i printf d d j i 不要写出别人看不懂的也不知道系统会怎样执行程序 3 9赋值运算符和赋值表达式 符号 为赋值运算符 2 整型数据赋给实型变量 数值不变 但按实数形式存放 1 将实型数据 无论单 双精度 赋给整型变量时 舍弃小数 赋值时 两边类型若不一致 则按以下规则转换 4 将int longint 进行符号扩展 即 符号扩展 低16位 long的低16位 5 longint int则高16位截断 3 字符型数据赋给整型变量时 2 字符 带符号整型变量 则字符高位扩展 1 字符 无符号整型变量 则存入低8位 高8位补零 6 将unsignedint型 longint高位补0 原值传送 但数据大小不能超值 如 unsignedinta 65535 intb b a 则越界 而位数相同部分赋值unsignedint intunsignedlong longunsignedshort short 7 非unsigned型 长度相同的unsigned型数据 原样传送 包括符号位 一 复合赋值运算符 在 号之前加一个其

温馨提示

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

评论

0/150

提交评论