




已阅读5页,还剩74页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第2章基本数据类型 运算符与表达式 2 1C语言的数据类型2 2常量与变量2 3整型数据2 4实型数据2 5字符型数据2 6各类数据混合运算2 7C语言的运算符与表达式2 8运算符的优先级及其结合性 Return 本章学习目标熟悉C语言的数据分类掌握常量的表示方法与变量赋初值的方法掌握不同类型数据间的混合运算掌握基本运算符及其表达式的使用 第2章基本数据类型 运算符与表达式 Return 本章学习目标先做好预习认真听课自己上机练习实践多用多记在后续内容学习中重复巩固 2 1C语言的数据类型 C语言提供了以下一些主要数据类型 说明 C语言为每个类型定义了一个标识符 称为类型名 例如 整型用int标识 字符型用char标识等 一个类型名由一个或几个关键字组成 仅用于说明数据属于哪一种类型 对于基本数据类型 按取值是否可改变分为常量和变量两种 在程序执行过程中 其值不发生改变的量称为常量 取值可变的量称为变量 它们可与数据类型结合起来分类 例如 可分为整型常量 整型变量 字符常量 字符变量等 在程序中 常量是可以不经过说明而直接引用的 而变量则必须先说明后使用 Return 在程序运行中 其值不改变的量称为常量 常量区分为不同的类型 如 5 0 7为整型常量3 2 4 68为实型常量 a f 为字符常量常量从字面形式即可判别 也可用一个标识符代表一个常量 称为符号常量 习惯上 符号常量名用大写 变量名用小写字母表示 以示区别 例如 definePI3 1415926 2 2常量与变量 Return 2 2 1常量 例2 1 符号常量的使用 已知圆半径为r 求圆周长c和圆面积s的值 definePI3 1415926main floatr c s scanf f 在该程序中 用 define命令行定义PI PI为定义的符号常量代表3 1415926 此后凡在程序中出现的PI都代表3 1415926 f表示以小数或者指数形式输入实型数据 从上面的例子可以看出使用符号常量的好处 一是含义清楚 见名知意 看程序时从PI就可以知道它代表圆周率 二是修改方便 一改全改 如要 definePI3 1415927 则在程序中所有出现PI的地方值全部改为3 1415927 Return 在程序运行时其值可以改变的量称为变量 变量是由变量名 变量值和存储单元组成的 2 2 2变量 1 变量名的命名规则 变量名用标识符表示 在C语言中 用来对变量 符号常量 函数 数组等数据对象命名的有效字符序列统称为标识符 C语言规定标识符只能由字母 数字和下划线3种字符组成 且第一个字符必须是字母或下划线 下面列出的是合法的标识符 可作为变量名 abc sum f4 student 1 下面是不合法的标识符 8h以数字开头 5以减号开头A 出现非法字符 x y出现非法字符 在使用标识符时须注意以下几点 1 建议变量名的长度最好不要超过8个字符 2 标识符大小写是有区别的 3 标识符命名时应尽量有相应的含义 增加程序的可读性 2 变量的定义 在C语言中 要求对所有用到的变量必须先定义 定义格式 类型说明符变量1 变量2 其中 类型说明符是C语言中的一个有效的数据类型 如整型类型说明符int 字符型类型说明符char等 例如 inta b c charcc 在C语言中 要求对所有用到的变量作强制定义 也就是 先定义 后使用 Return 2 3 1整型常量 2 3整型数据 Return 整型常量即整常数 C语言中的整常数可用以下3种形式表示 1 十进制整常数 十进制整常数没有前缀 其数码为0 9 如 123 234 0 2 八进制整常数 八进制整常数以数字0作为前缀 如 0123 0234 后面只能是有效的八进制数字0 7 若写成09就错了 3 十六进制整常数 十六进制整常数的前缀为0X或0 x 其数码取值为0 9 A F或a f 如 0 x19A 0 x2f 2 3 2整型变量 1 整型数据在内存中的存放形式整型数据在内存中是以二进制形式存放的 例如 定义了一个整型变量a inta 定义a为整型变量 a 25 给a赋以整数25 十进制数25的二进制形式为11001 TurboC2 0和TurboC 3 0为一个整型变量在内存中分配2个字节的存储单元 不同的编译系统为整型数据分配的字节数是不相同的 在这里我们假定每一个整型变量在内存中占2个字节 2 3 2整型变量 1个字节 Byte 由8个二进制位 bit 构成 每一个字节有一个地址 2 整型变量的分类整型变量的基本类型符为int 可以根据数值的范围将变量定义为基本整型 短整型或长整型 有以下3类整型变量 基本整型 以int表示 短整型 以shortint表示 长整型 以longint表示 整数 Integer 在int前可以加上以下类型修饰符 用来改变和扩充基本类型的含义 long长short短signed有符号unsigned无符号 这些修饰符与int可以组合成以下6种整型变量 即 有符号的基本整型 signed int无符号的基本整型unsignedint有符号的短整型 signed short int 无符号的短整型unsignedshort int 有符号的长整型 signed long int 无符号的长整型unsignedlong int 上面的方括号表示其中的内容是可选的 例2 2 下图保存了整数14的各种整型数据类型 字节 Byte 通常将可表示常用英文字符8位二进制称为一字节 字节 Byte 通常将可表示常用英文字符8位二进制称为一字节 位 一位二进制数为一位 3 整型变量的定义在C语言程序中所有用到的变量都必须在程序中定义 格式 数据类型名变量名 例2 3 变量的定义与使用 exam2 3 main inta b c sum 定义整型变量a b c sum a 3 b 4 c 9 a b c分别赋初值 sum a b c 求a b c的和赋给变量sum printf nsum d sum 换行输出变量sum的值 程序运行结果 sum 8 演示 4 整型数据的溢出一个int型变量的最大允许值为32767 如果再加1 那么结果会是什么样的呢 我们看下面这个例子 例2 4 整型数据的溢出 exam2 4 main inta b a 32767 b a 1 printf na d a 1 d n a b a 32768 b a 1 printf na d a 1 d n a b 程序运行结果 a 32767 a 1 32768a 32768 a 1 32767 演示 可以认为是时钟循环 5 整型常量的类型 1 一个整数如果其值在 32768 32767范围内 则认为是int型 可以赋给int型和longint型变量 2 一个整数如果其值超过了上述范围 在 2147483648 2147483647内 则认为是longint型 可赋给longint型变量 3 如果所使用的C语言版本确定shortint和int型数据在内存中占据长度相同 则其表示范围与int型相同 因此一个int型的常量也同时是一个shortint型常量 可以赋给int型或shortint型变量 4 常量中无unsigned型 但可以将一个非负值且在取值范围内的整数赋给unsigned型变量 5 在一个整常量后面加一个字母l或L 则认为是longint型常量 2 4实型数据 1 实型常量的表示方法 2 4 1实型常量 C语言中的实数 浮点数 有两种表示形式 1 十进制小数形式由数字0 9和小数点和正负号组成 必须有小数点 2 指数形式也称为科学计数法 以幂的形式表示 以字母e或E后跟一个以10为底的幂数 其一般形式为 ae b 表示a 10 b 其中a是十进制数 可以是整数或是小数 字母e或E之前必须要有数字 且字母e或E后面的指数b必须为整数 字母e或E的前后及数字之间不得有空格 Return 2 实型常量的类型 许多C编译系统将实型常量作为双精度实数来处理 这样可以保证较高的精度 缺点是运算速度降低 Win TC是 可以在实数的后面加字符f或F 如1 65f 654 87F 使编译系统按单精度处理实数 实型常量可以赋值给一个float double longdouble型变量 根据变量的类型截取实型常量中相应的有效数字 例2 5 显示个人微机上不同类型变量所占的字节数 exam2 5 includemain printf thebytesofthevariablesare n printf int dbytes n sizeof int printf char dbytes n sizeof char printf short dbytes n sizeof short printf long dbytes n sizeof long printf float dbytes n sizeof float printf double dbytes n sizeof double printf longdouble dbytes n sizeof longdouble 程序运行结果 thebytesofthevariablesare int 2byteschar 1bytesshort 2byteslong 4bytesfloat 4bytesdouble 8byteslongdouble 10bytes 演示 1 实型数据在内存中的存放形式 2 4 2实型变量 一个实型数据一般在内存中占4个字节 32位 与整数存储方式不同 实型数据是按照指数形式存储的 系统将实型数据分为小数部分和指数部分 分别存放 2 实型变量的分类 语言的实型变量 分为两种 1 单精度型 类型关键字为float 一般占 字节 32位 提供 位有效数字 小数后面6位小数 2 双精度型 类型关键字为double 一般占 个字节 提供15 16位有效数字 3 实型数据的舍入误差 实型变量是由有限的存储单元组成的 因此提供的有效数字总是有限的 在有效位以外的数字将被舍去 由此可能会产生一些误差 例2 6 实型数据的舍入误差 exam2 6 main floatx y x 123456 789e5 y x 20 printf x f y f n x y 程序运行结果 x 12345678848 000000 y 12345678848 000000 演示 例2 7 实型数据的定义和使用 exam2 7 main floatx doubley x 123456 1234 y 123456 1234 printf x f y lf n x y 程序运行结果 x 123456 125000 y 123456 123400 演示 字符型常量是用一对单引号 即撇号括起来的一个字符 只能用单引号括起来 不能用双引号或其它括号 字符常量只能是单个字符 不能是字符串 注意 a 和 A 是不同的字符常量 例如 d R 等都是合法字符常量 小结 双单 2 5字符型数据 2 5 1字符常量 1 定义 Return 2 转义字符 转义字符是一种特殊的字符常量 是以反斜杠 开头的字符序列 例2 8 转义字符的使用 exam2 8 main printf x4F x4B OK 程序运行结果为 演示 1 变量值的存储 2 5 2字符变量 字符变量的定义形式如下 chara1 a2 它表示a1和a2为字符型变量 各可以放一个字符 因此在本函数中可以用下面语句对a1 a2赋值 a1 x a2 y 2 特性 1 一个字符型数据 既可以字符形式输出 也可以整数形式输出 2 允许对字符数据进行算术运算 此时就是对它们的ASCII码值进行算术运算 exam2 10 main charch1 ch2 ch1 a ch2 b printf ch1 c ch2 c n ch1 ch2 printf ch1 d ch2 d n ch1 ch2 例2 10 用字符形式和整数形式输出字符变量 程序运行结果 ch1 a ch2 bch1 97 ch2 98 演示 例2 11 字符数据的算术运算 exam2 11 main charch1 ch2 ch1 a ch2 B printf ch1 c ch2 c n ch1 32 ch2 32 字母的大小写转换 程序运行结果 ch1 A ch2 b 演示 2 5 3字符串常量 1 字符串常量的概念和字符串长度 字符串常量是用一对双引号 括起来的若干字符序列 这里的双引号仅起到字符串常量边界符的作用 它并不是字符串常量的一部分 字符串中字符的个数称为字符串长度 长度为0的字符串 即一个字符都没有的字符串 称为空串 表示为 一对紧连的双引号 2 字符串的存储 C语言规定 在存储字符串常量时 由系统在字符串的末尾自动加一个 0 作为字符串的结束标志 如有一个字符串为 CHINA 则它在内存中的实际存储如下图所示 存储长度为6 Return 2 6各类数据混合运算 整型 实型 字符型数据之间可以混合运算 运算规则 不同类型的数据先转换成同一类型 然后进行计算 转换方法 自动转换 隐式转换 强制转换 Return 自动转换 隐式转换 自动转换发生在不同类型数据进行混合运算时 由编译系统自动完成 自动转换规则 类型不同 先转换为同一类型 然后进行运算 1 图中纵向的箭头表示当运算对象为不同类型时转换的方向 2 图中横向向左的箭头表示必定的转换 2 强制转换 通过类型转换运算来实现 格式 类型说明符 表达式功能 把表达式的结果强制转换为类型说明符所表示的类型 例如 double a 将变量a的值转换成double型 int x y 将x y的结果转换成int型 例2 12 强制类型转换 exam2 12 main floatx inti x 3 6 i int x printf x f i d x i 程序运行结果 x 3 600000 i 3 x的类型仍为float型 值仍等于3 6 演示 2 7C语言的运算符与表达式 运算符 表示各种运算的符号 表达式 使用运算符将常量 变量 函数连接起来的式子 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 及其扩展赋值运算符 条件运算符 逗号运算符 指针运算符 求字节数运算符 sizeof 强制类型转换运算符 类型 分量运算符 下标运算符 其它 如函数调用运算符 C语言的运算符有以下几类 C语言有以下类型的表达式 赋值表达式 如 a 1算术表达式 如 1 2 3 4 5关系表达式 如 4 7逻辑表达式 如 8 4 ab a b逗号表达式 如 a 1 b 2 c 3位表达式 如 0 1 0 1 1 1 1 0 1 2 7 1算术运算符和算术表达式 1 算术运算符C语言提供的算术运算符及功能如下 加法运算符或正值运算符 如31 18 2 减法运算符或负值运算符 如6 3 21 57 乘法运算符 如4 1 9 除法运算符 如5 3 模运算符或称取余运算符 要求 的两边必须为整型数据 如123 15 2 7都是正确的 而25 1 5 12 0 6 0都是错误的表示 2 算术表达式 用算术运算符和括号将数据对象连接起来的式子 称为算术表达式 运算对象包括常量 变量 函数等 例如 3 6 9 x y 2 aa b c 1 5 a 都是算术表达式 算术运算符的结合方向为 自左至右 例2 13 将430分钟换算成小时和分钟表示 然后输出 exam2 13 main inti h m i 430 h i 60 m i 60 h printf n dminutes dhour dminutes i h m 程序运行结果 430minutes 7hour10minutes 演示 例2 14 求表达式2 d 10的值 设a 64 d 6 exam2 14 include 调用标准数学函数 注意添加 main floata d s a 64 d 6 s 2 sqrt a d 10 printf n 6 2f s 程序运行结果 12 00 演示 2 7 2自增与自减运算符 1 功能自增运算符 的作用是使变量的值增 自减运算符 的作用是使变量的值减 2 用法与运算规则自增 自减运算符都有两种用法 1 前置运算 运算符放在变量之前 变量 变量 2 后置运算 运算符放在变量之后 变量 变量 例2 16 自增 自减运算符的用法 exam2 16 main intx 6 y printf x d n x 输出x的初值 y x 前置运算 printf y x x d y d n x y y x 后置运算 printf y x x d y d n x y 程序运行结果 x 6y x x 7 y 7y x x 6 y 7 演示 注意 在表达式中 连续使同一变量进行自增或自减运算时 很容易出错 所以最好避免这种用法 Return 2 7 3赋值运算符和赋值表达式 1 赋值运算符赋值运算符为 它的作用是将一个数据赋给一个变量 转换原则 先将赋值号右边表达式类型转换为左边变量的类型 然后赋值 例2 17 赋值运算中类型转换的规则 exam2 17 main inti 5 说明整型变量i并初始化为5 floata 3 5 a1 说明实型变量a和a1并初始化a doubleb 123456789 123456789 说明双精度型变量b并初始化 charc A 说明字符变量c并初始化为 A printf i d a f b f c c n i a b c 输出i a b c的初始值 a1 i i a a b c i 整型变量i的值赋值给实型变量a1 实型变量a的值赋给整型变量i 双精度型变量b的值赋值给实型变量a 整型变量i的值赋值给字符变量c printf i d a f a1 f c c n i a a1 c 输出i a a1 c赋值以后的值 程序运行结果 i 5 a 3 500000 b 123456789 123457 c Ai 3 a 123456792 000000 a1 5 000000 c 演示 2 复合的赋值运算符 在赋值符 前加上某些运算符 可以构成复合赋值运算符 即 共10种 复合赋值运算符均为双目运算符 右结合性 功能 对 变量名 和 表达式 进行复合赋值运算符所规定的运算 并将运算结果赋值给复合赋值运算符左边的 变量名 2 复合的赋值运算符 include stdio h main inta 2 b 4 c 6 d 3 a b d b c d printf d d d d n a b c 2 a d c getch 2 复合的赋值运算符 在赋值符 前加上某些运算符 可以构成复合赋值运算符 即 共10种 复合赋值运算符均为双目运算符 右结合性 功能 对 变量名 和 表达式 进行复合赋值运算符所规定的运算 并将运算结果赋值给复合赋值运算符左边的 变量名 3 赋值表达式 赋值表达式 由赋值运算符组成的表达式称为赋值表达式 赋值表达式一般形式 变量名赋值运算符表达式 赋值的含义 将赋值运算符右边的表达式的值存放到左边变量名标识的存储单元中 例如 a 5 b 执行赋值运算 将5 b的值赋给变量a 同时整个表达式的值就是刚才所赋的值 赋值运算符的功能 一是计算 二是赋值 Return 2 7 4关系运算符及其表达式 1 关系运算符C语言提供了6种关系运算符 大于 大于或等于 等于 不等于 2 关系表达式用关系运算符将两个操作数连接起来的合法的C语言式子 称为关系表达式 例如 关系表达式 1 2 的值为 假 4 3 的值为 真 在C语言中以0表示逻辑假 以1表示逻辑真 当输出结果为逻辑真时 显示1 当输出结果为逻辑假 显示0 Return 2 关系表达式 include stdio h main inta b c x 17 y 16 z 13 a x y z b
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 巡视整改监督培训课件
- 巡察整改课件
- 岩棉板保温课件
- 输煤安全培训项目课件
- 产业协同发展工厂承包合作协议
- 企业长期用车租赁管理服务合同
- 公寓租赁退房协议及押金退还细则
- 创业合伙人知识产权共享与利益分配合作协议
- 小青蛙模仿操课件
- 贴墙砖工人安全培训课件
- 富士康自动化培训知识课件
- 北宋名臣滕元发:才情、功绩与时代映照下的复合型士大夫
- 2025年中小学生宪法知识竞赛试题及答案
- 制冷复审课件
- 《新媒体营销与运营》-课程标准、授课计划
- 数字媒体技术认知实习
- 2025年教科版新教材科学三年级上册教学计划(含进度表)
- 2025华中师大教育技术学导论练习测试题库及答案
- 消化内科临床科室发展规划与实施方案
- 空天飞机热管理系统-洞察及研究
- 讲解壮族文化
评论
0/150
提交评论