C语言数据类型与运算规则.ppt

上传人:max****ui 文档编号:6333374 上传时间:2020-02-23 格式:PPT 页数:50 大小:568.05KB
返回 下载 相关 举报
C语言数据类型与运算规则.ppt_第1页
第1页 / 共50页
C语言数据类型与运算规则.ppt_第2页
第2页 / 共50页
C语言数据类型与运算规则.ppt_第3页
第3页 / 共50页
点击查看更多>>
资源描述
数据类型与运算规则 一 数据与数据类型二 C语言的基本数据类型及其表示三 C语言中的运算规则四 算术运算与赋值运算五 关系运算与逻辑运算六 其他运算 数据与数据类型 什么是数据 在程序中 数据是程序加工 处理的对象 也是加工的结果 什么是数据类型 在程序中 程序所能处理的基本数据对象被划分成具有同样性质的数据的集合 这样的数据集合称为数据类型 在C语言中 任何数据呈现的形式有两种 常量或变量 无论常量还是变量都必须属于各种不同的数据类型 C语言规定的主要数据类型如下 整数型int单精度型float实数型 浮点型 基本类型双精度型double字符型char数据类型指针类型数组型构造类型结构型struct联合型union枚举型enum无值类型 空类型 void 数据与数据类型 什么是类型名 C语言为每种类型定义了一个标识符 它通常被称为类型名 类型名由一个或几个关键字组成 什么是构造类型 构造类型一般是由其他的数据类型按照一定的规律构造而成 结构比较复杂 数据与数据类型 C语言的基本数据类型及其表示 什么是常量 常量是指程序在运行时不能改变的量 一般以自身的存在形式直接表示 注 常量并不占内存 在程序运行时它作为操作对象直接出现在运算器的各寄存器中 C语言的基本数据类型及其表示 十进制整型常量八进制以数字 0 开头数值常量十六进制以数字 0 x 或 0X 开头实型常量小数形式如 1 2 0 指数形式如 12 2e 5常量字符常量字符常量字符串常量注 长整型也可以用十进制 八进制和十六进制形式表示 其表示形式是在常量之后加上字母 l 或者 L 例如 123L 123l 常量应用 整型常量 123 123 123L 123l八进制 以0开头 0123 038 0123l 0123L十六进制 以0 x开头 0 x123 0 x1f实型常量 1 23 2E 4 2 3E 4字符常量 a A b 1 0 字符串常量 Computer C语言的基本数据类型及其表示 什么是符号常量 用标识符表示的常量称为符号常量 C语言中用宏定义命令对符号常量进行定义 其定义形式为 define标识符常量 宏定义的功能是 在编译预处理时 将程序中宏定义命令之后出现的所有符号常量用宏定义命令中对应的常量一一替代 definePR30main intnum total num 3 total num PR printf total d n total C语言的基本数据类型及其表示 1 符号PR代替常量30 称为符号常量2 符号常量的定义是在编译预处理语句里进行的 称为宏定义3 符号常量一般用大写 什么是变量 变量是指在程序运行时可以改变的量 在程序里的一个变量可以看成是一个存储数据的容器或存储单元 在该单元中存放变量的值 变量的定义形式 类型说明符变量名表 变量名表的形式是 变量名1 变量名2 变量名n C语言的基本数据类型及其表示 C语言提供的基本变量类型有 整型变量数值变量变量实型变量字符变量指针变量例如 inta b c 说明a b c为整型变量 charcc 说明cc为字符变量 doublex y 说明x y为双精度实型变量 注意 变量要先定义 后使用 每一个变量被指定为一确定类型 关键字和预定义标识符不要另作它用 C语言的基本数据类型及其表示 整型数据及其表示整型的类型 整型 长整型 无符号整型和无符号长整型 计算机中的整型实际上是数学中的整型的一个子集 C语言中 所有的数据型常量都带有符号 所以整型常量只区别整型和长整型两种形式 而没有无符号整型常量 整型常量C的整常数可用以下三种形式表示 1 十进制整数 123 456 02 八进制整数 以0开头的数是八进制数 0123 八进制123 十进制83 1 8 8 2 8 3 011 十进制93 十六进制整数 以0 x或0X开头的数是十六进制数 C语言的基本数据类型及其表示 整型常量C的整常数可用以下三种形式表示 1 十进制整数 123 456 02 八进制整数 以0开头的数是八进制数 0123 八进制123 十进制83 1 8 8 2 8 3 011 十进制93 十六进制整数 以0 x或0X开头的数是十六进制数0 x123 16进制123 十进制291 1 16 16 2 16 3 0 x11 十进制 17注 一个整常量后加一个字母l或L 则认为是long型常量 例如 123L 017l 0Xf3acL整型变量以关键字int作为基本类型说明符 另外配合4个类型修饰符 用来改变和扩充基本类型的含义 以适应更灵活的应用 C语言的基本数据类型及其表示 ANSI标准规定的整型变量属性表 例 已知 整数a b 正数u 求 a u b u的值main inta b c d unsignedu a 12 b 24 u 32767 c a u d b u printf a u d b u d n c d 注 数据的溢出 常量与变量的类型要匹配 C语言的基本数据类型及其表示 实型数据及其表示 C语言的基本数据类型及其表示 实型常量C语言中的实数有两种表示形式 1 十进制形式 由符号 数字和小数点组成 如 0 123 0 0 54 02 指数形式 十进制小数e指数或十进制小数E指数如123e3 1 23E 2 e或E的前面必须有数字 后面必须为整数 如不合法的指数形式 e3 2 1e3 5 e3 e注 1 实型常量一般都作为双精度实数来处理 并只用十进制表示 2 如果要表示单精度实型常量和长双精度实型常量 只要在上述书写形式后面分别加上后缀f F 或l L 即可 例如 2 3f 21 23e3L C语言的基本数据类型及其表示 实型变量在C语言中 实型变量分为单精度 双精度和长双精度三种类型 所用关键字如下 float单精度double双精度longdouble长双精度例如 floata b doublec d longdoublee fmain floata doubleb a 12345 6789 b 0 1234567891234567899e15 printf a f b f n a b C语言的基本数据类型及其表示 实际输出结果 a 12345 678711 b 123456789123456 79700 字符型数据及其表示什么是字符型数据 字符型数据包括字符和字符串两种 字符型数据在计算机中存储的是字符的ASCII码 而不是字符本身 一个字符占一个字节 在C语言中字符型数据和整型数据可以通用 即 它可以与整型数据进行算术运算 相互赋值等 也可采用字符或整型数据两种输出 什么是字符型常量 C语言中字符常量是用单引号括起来的一个字符 如 a A 等都是字符常量 但注意 a A 是不同的两个字符常量 字符常量占8位 一个字节 按ASCII码存储 什么是转义字符 转义字符是一种特殊形式的字符常量 其意义是将转义符 后的字符原来的含义进行转变 变成某种另外特殊约定的含义 C语言的基本数据类型及其表示 什么是字符型变量 字符型变量就是用来存放字符的变量 例 charc1 c2 c1 a c2 b 什么是字符串常量 字符串常量就是用一对双引号括起来的字符序列 注 C语言没有专门的字符串变量 如需要处理字符串 一般用字符型数组来实现 例 charc c a 是错的 注意 不能将一个字符串赋给一个字符变量 需要字符数组来存放字符串常量 字符常量与字符串常量的区别有两个方面 1 字符串常量是用一对双引号括起来的一串字符 字符常量是用一对单引号括起来的单个字符 2 字符常量在内存中占一个字符 而字符串常量除了每个字符占一个字节外 其字符串结束符 0 也要占一个字节 如 字符常量 a 占一个字节 而字符串常量 a 占2个字节 C语言的基本数据类型及其表示 指针型数据及其表示指针是一种数据类型 它是一个变量在内存中所对应存储单元的地址 指针的说明形式 类型说明符 变量名main floata pa intx y px pa C语言的基本数据类型及其表示 变量的初始化变量的初始化是指在变量说明的时候同时对变量赋初值 floatx 123 2 inta b c 10 intx pa C语言的基本数据类型及其表示 C语言中的运算规则 运算的操作规则包括 运算符 表达式和运算过程 运算符是C语言里用于描述对数据进行运算的特殊符号 C语言的运算符按其在表达式中与运算对象的关系可分为 单目运算 一个运算符连接一个运算对象 如 双目运算 一个运算符连接二个运算对象 如 三目运算 一个运算符连接三个运算对象 C语言中只有唯一一个 C语言的运算符按其在表达式中所起作用可分为 P54 算术运算符 自增自减运算符 赋值与赋值组合运算符 关系运算符 条件运算符 逗号运算符 其他 sizeof type C语言中的运算规则 表达式就是用运算符将运算对象连接而成的符合C语言规则的算式 表达式中的运算对象可为变量 常量 函数调用等 按运算符在表达式中与运算对象的关系可分为 单目表达式 一个运算符连接一个运算对象 如 双目表达式 一个运算符连接二个运算对象 如 三目表达式 一个运算符连接三个运算对象 C语言中只有唯一一个 C语言中的运算规则 C语言中的运算规则 按运算符在表达式中所起作用可分为 P54 算术表达式 a b自增自减表达式 i赋值与赋值组合表达式 a 4 a 2 a b 6关系表达式 a b a b a b 逻辑表达式 a b c 字位表达式 a 2逗号表达式 a b a b C语言中的运算规则 优先级是指同一个表达式中不同运算符进行计算时的先后次序 结合性是指同一个表达式中相同优先级的多个运算应遵循的运算顺序 类比 数学中的四则运算 算术运算与赋值运算 算术运算符与算术表达式算术运算符 注意 p561 除法运算 在使用时要特别注意数据类型 因为两个整数 或字符 相除 其结果是整数 如果不能整除时 只取结果的整数部分 小数部分全部舍去 例如 1 3 013 4 3若两个实数相除时 所得的商也是实数 例如 1 0 3 0 0 333332 运算符 单目求正 求负 优先级高 低结合级自右至左自左至右自左至右 算术运算与赋值运算 算术表达式算术表达式由算术表运算符 常数 变量 函数和圆括号组成 其基本形式与数学上的算术表达式类似 例 将下列数学表达式 p57写成C语言表达式如下 a b c sqrt a b sin x sin y sin z 其中sqrt a 和sin x sin y sin z 都是数学函数的引用 算术运算与赋值运算 自增 自减运算自增 自减 运算是单目运算 其作用是使变量的值增1或减1 其优先级高于所有双目运算 i i 运算符在变量前面 称为前缀式 表示变量在使用前自动加1或减1 i i 运算符在变量后面 称为后缀式 表示变量在使用后自动加1或减1 注 运算只能用于变量 并且变量只能是整数 字符型和指针 不能用于表达式或常量 因为自增 自减运算是对变量进行加1或减1操作后再对变量赋新的值 而表达式或常量都不能进行赋值操作 算术运算与赋值运算 例 设x 5y x 等价于 先计算x x 1 结果x 6 再执行y x 结果y 6y x 等价于 先执行y x 再计算x x 1 结果y 5 x 6y x x y 25x 7y x x y 49x 7 算术运算与赋值运算 赋值运算符和赋值表达式赋值运算符 功能是计算赋值运算符 右边表达式的值 并将计算结果赋给 左边的变量 赋值运算符的优先级只高于逗号 比其他的都低 结合性自右至左赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子变量名 表达式如 b x y 5等价于b x y 5 算术运算与赋值运算 类型转换在对赋值表达式求解过程中 如果赋值运算符两边的数据类型不一致 赋值时要进行类型转换 其转换工作由C编译系统自动完成 转换原则是以 左边的变量的类型为准 即将 右边的值转换为与 左边的变量类型相一致 类型转换方式 1 整型 实型 舍弃实数的小数部分2 实数 整数 数值不变 但以实数形式表示数3 整型 字符型 将字符数据的低8位放入整数的低8位中 算术运算与赋值运算 main P59 inti 5 floata 3 5 a1 doubleb 123456789 123456789 charc A print i d a f b f c c n i a b c a1 i i a a b c i print i d a f a1 f c c n i a a1 c 运行结果如下 i 5 a 3 500000 b 123456789 123457 c Ai 3 a 123456792 000000 a1 5 000000 c 算术运算与赋值运算 组合赋值运算符组合赋值表达式1 组合赋值运算符在赋值运算符 之前加上其他运算符可以构成组合运算符 用于完成赋值组合运算操作 表示形式 运算符 其中的运算符可以是 所构成的组合赋值运算有 2 组合赋值表达式由组合赋值运算符将一个变量和一个表达式连接起来的式子称为组合赋值表达式 其形式为 变量名组合赋值运算符表达式其功能是对 变量名 和 表达式 进行组合赋值运算符所规定的运算 并将运算结果赋值给组合赋值运算符左边的 变量名 组合赋值运算的作用等价于 变量名 变量名运算符表达式a 3等价于a a 3a b 5等价于a a b 5 a 1等价于a a 1或 a 算术运算与赋值运算 思考题 inta 12 n 15 1 a a 2 a a 3 a 2 3 4 a a a 5 a n 2 6 a a a a 算术运算与赋值运算 关系运算与逻辑运算 关系运算与逻辑运算 用来构造C程序控制中的条件 实现程序的选择结构和循环结构控制 对于关系运算和逻辑运算的结果 将逻辑 真 记录为整数1 将逻辑 假 记录为整数0 C语言中 真 和 假 的表示C语言没有逻辑类型数据 是用数值来表示 非0值表示 真 0表示 假 任意一个表达式 如果值为0时 就代表一个 假 值 值是非0 无论是正数还是负数 都代表一个 真 值 使用逻辑或关系表达式返回0作 假 值 返回1作 真 值 关系运算符p61优先级 和 的优先级低于前四种 关系运算符的优先级低于算术运算符 高于赋值运算符 如 A B C D结果只有两种 真 1 假 0 注意 由于计算机处理浮点数是有误差的 所以不要拿浮点数来做相等的比较 如 x 100 0 y x 100 关系运算与逻辑运算 关系运算与逻辑运算 关系表达式用关系运算符将两个表达式连接起来的式子称为关系表达式 表达式可以是算术表达式 关系表达式 逻辑表达式 赋值表达式和字符表达式 但一般关系运算要求关系运算符连接的两个运算对象为同类型数据 进行关系运算时 先计算表达式的值 然后再进行关系比较运算 例 设a 2 b 3 c 4a b 3 c两个算术表达式 a b c 两个关系表达式 A a 两个字符表达式 逻辑运算符与逻辑表达式逻辑运算符 逻辑运算要求运算对象为 真 或 假 0 关系运算与逻辑运算 逻辑运算真值表 或运算规则 优先级从高到低有 前述四种运算符的优先级从高到低的顺序为 赋值符 关系运算与逻辑运算 例 inta 3 b 1 x 2 y 0 a b x y 值为1a b x y值为1 y b y a 值为1 a a b值为1若 a 4 b 5 x b y a 则 a值为0a b值为1a b值为14 0 2值为1 c d 值为1如 10 5 10 4等价为 10 5 10 4 1 1 01 01结果该表达式的值为1注意 逻辑表达式中的运算并不一定都要执行如 a b c 如果a为0 则该表达式的值必然为0 b和c的值不需要再计算如 a 5 3 b由于a 8 该表达式的结果必然为1 b的操作不会执行 b的值不变结论 在逻辑表达式中 最好不要改变变量的值p64 关系运算与逻辑运算 条件运算符与条件表达式条件运算符 由它构成的表达式 其形式为 表达式1 表达式2 表达式3条件表达式的值 当表达式1的值非0 计算表达式2 其值为整个条件表达式的值 当表达式1的值为0 计算表达式3 其值为整个条件表达式的值 例 a 6 b 9 求两数的最大值z a b a bz 9例 求a b c三数中的最小值z a b b c c b a c c a 关系运算与逻辑运算 其他运算 逗号运算符作用 用逗号连接几个表达式 表达式1 表达式2 表达式n求解过程 从左到右求表达式的值 表达式的值为最右边表达式的值 假设y 10 则x y 5 25 y 相当于y y 5 x 25 y 和 运算符作用是引用构造数据类型的结构和联合中的分量 即表示结构或联合中的成员 其形式为 结构变量名 结构成员名或结构指针变量名 结构成员名 和 运算符园括号改变优先级别 方括号用于标识数组元素的下标 和 b x表示访问变量a的值 其他运算 type 运算符 type 强制类型转换符 是单目运算符 其作用是进行数据类型的强制转换 将右边表达式的值转换成括号中指定的数据类型 类型名 表达式例 floata intb int a b 将a b结果强制类型转换 int a b将a强制类型转换思考 华氏温度转换成摄氏温度公式为 c 5 9 f 32 注 强制数据类型转换只暂时的改变使用数据的类型 不改变变量的数据类型 其他运算 sizeof运算符应用形式 sizeof opr 其中opr可以是表达式或数据类型名目的 得到操作数所占存储空间的字节数 如 sizeof int 结果为2 sizeof 5 6 3 结果为8 所有实数按double处理 其他运算 混合运算及数据类型转换 混合运算混合运算是指在一个表达式中参与运算的对象不是相同的数据类型 如 2 3 14 r数据类型转换在C语言中 对于混合运算 要先将不同的类型的数据转换成同一类型再进行运算 类型转换的一般规则是 1 同类型数据之间运算时 结果仍为同类型 如 intx 3 y 5 floatz 10 0 a a x y z 结果为02 不同类型数据之间运算时 C编译器将所有操作数 向上 转换成数据最长的数据类型 char int unsignedint long unsignedlong float double 3 赋值时自动向变量的数据类型看齐例 inti 5 floatf 2 1 c c 10 a i f 1 10 a a 转换为97 结果为1072 i为整型 f为单精度数 将他们转换为双精度 然后相乘 结果为双精度数10 53 107转换为双精度 结果为双精度数117 54 赋值后c为单精度数117 5提示 为了进一步优化代码 目前流行的大多数C编译程序常常会改变表达式的求值顺序 我们在书写表达式时最好用括号明确地指定运算符的优先级 混合运算及数据类型转换 再见
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


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


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

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


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