




已阅读5页,还剩27页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计第二章数据类型 众嵌科技 知识要点 2 1C语言的数据类型2 2常量与变量2 3整型数据2 4实型数据2 5字符数据2 6变量的定义与赋值2 7C语言类型修饰符2 8数据类型转换 2 1C语言的数据类型 什么是数据类型 就像对自然界中的动物 为了对它们进行区分 在动物学上我们把狗 狼归为犬科动物 猫 虎 豹归为猫科动物一样 为了区分不同类型的数据 在计算机领域也有一套标准来区分各种数据 用这种区分方法得到的数据类别就是数据类型 例如 我们可以把带小数的数归为一类 0 2 8 7 1 12 3 22 称为小数类型 把不带小数的数又归为一类 1 2 3 5 0 称为整数类型 那么小数类型和整数类型都被称为数据类型 2 1C语言的数据类型 C语言数据类型的分类 基本类型 整型 实型 字符型 枚举类型 构造类型 数组类型 结构体类型 共用体类型 指针类型 空类型 C语言数据类型 2 2常量与变量 量程序在运行过程中 所有与程序运行相关的数据都存储在内存单元中 这些存储着数据的内存单元我们称为量 为了便于理解 我们会为量定义一个易于理解的名字 称为量名 量在程序设计中有两种 一种是常量 另一种是变量 常量在程序运行过程中 其值不能被改变的量称为常量 变量在程序运行过程中 其值可以被改变的量称为变量 2 2常量与变量 思考 常量与变量在程序设计中的作用是什么 变量的作用 就像我们做算术题时 需要草稿纸一样 变量是电脑进行程序运算时存储临时运算结果的地方 没有变量电脑将不能进行任何稍微复杂一点的运算 常量的作用 常量是为了方便程序员维护程序而设计的 有些特殊的数值 如 3 1415926 在程序里可能多处重复出现 为了避免程序员重复输入产生错误 一般会建立一个常量令它的值等于我们希望的这个数值 来降低代码出错可能 另外 当我们期望改变这个特殊值的时候 只要改变这个常量的值就可以了 而不必改变所有引用这个值的地方 2 3整型数据 什么是整型数据 整型数据等同于数学上的整数 凡是不带小数的数我们都归于这一类 如1001 23 0 244 332等等 C语言中整型数据的表现形式我们日常经常接触到的一类整数表现形式是十进制 这种表现形式的特点就是逢十向前进一位 除此以外电脑中还有类似的几种表现形式 如二进制 逢二向前进一位 八进制 逢八向前进一位 十六进制 逢十六向前进一位 在这些进制表现方式中 都有一个特点 那就是对于N进制而言 它每一位上的数值必定不能大于N 1 如十进制每一位最大为9 二进制最大为1 八进制最大为7 十六进制最大为15 例2 1 整型数据20的各种表现形式 2020 2 0 1 十进制 20 2 二进制 10100b 3 八进制 024 4 十六进制 0 x14 注 C语言中规定在数据后面加b表示这个数是二进制数 在数值前加0表示是八进制数 在数值前加0 x表示是十六进制数 10522202102522201042 0 0 1 0 1 82016 2 4 162016 1 4 十六进制表示法 为了在书写上不与其它进制表示法产生混淆 十六进制借用字符A F来表示数值10 15 十进制 十六进制 012345678910111213141516 0123456789ABCDEF10 思考 现实世界还存在哪种进制表示法为了避免与其它进制表示法混淆而采用了特殊的表示方法 答案 时间 现实世界的时间是使用的六十进制来表示的 如下午3点半的表示方法就是15 30 这种用 号区分小时和分钟的表示法就是时钟特有的表达方式 如果没有 号放在当中区分 那么15 30表示的意思就会和十进制1530无法区分开来 2 3整型数据 字节的概念早期的电脑只能存储整型数据 而且只能已二进制方式存储和表达数据 因为每个二进制位只有两种取值可能 要么是1 要么是0 所以早期的存储介质如卡带机就可以通过往纸带对应位置打孔表示1 不打孔表示0的方式来存储信息 对于内存而言 存储方式类似 只是判断0 1的条件由打孔变成了是否有电信号了 正是因为这个特点 所以电脑里存储单元都是以二进制位为单位来衡量的 我们通常所说的字节就表示8个二进制位 可以表示 0 255 的数值范围 13 1011 8个存储单元为一个字节 01001010 字节存储单元 2 3整型数据 根据存储单元大小不同 C语言整型数据分为以下几种 字符型char 占用一个字节单元 表示范围 0 255 短整型short 在16位操作系统下 占用1个字节单元 表示范围 0 255 在32位操作系统下 占用2个字节单元 表示范围 0 216 1 整型int 在16位操作系统下 占用2个字节单元 表示范围 0 216 1 在32位操作系统下 占用4个字节单元 表示范围 0 232 1 2 3整型数据 长整型long 占用4个字节单位 表示范围 0 232 1 缺省约定 如果整数后面跟一个字母 L 则表示这个数是一个长整型long 否则缺省默认为整型int 如300L就表示一个长整型数据300 补码前面所说的整数都没有讨论其负数的情况 负数在电脑中如何存储的呢 其实负数在电脑中也和正整数一样存储 不过需要预先编码一下 这种编码方式我们称为补码 补码 整数 27的char型数据补码计算过程如下 27二进制化 逐个二进制位取反 结果加1即得补码所以整数 27的char型数据补码的二进制表示是11100101 换算成十进制就是229 小经验 负数最高二进制位总是1 正数最高二进制位总是0 2 3整型数据 有符号整型数据的存储方式有符号整型数据的存储分为两种情况 正数直接以二进制方式存储 负数首先将其转换成补码后再存储 所以 对于一个整型数据 若其最高二进制位为1则表示这个整型数据是负数 否则是零或者是正数 那么当这个整型数据可表示的无符号范围是 0 N 的时候 那么它的有符号存储范围就是 N 1 2 N 1 2 1 因为 0 N 的区间大小是 N 1 它的一半空间用来存负数 另一半空间用来存正数和零 所以它的有符号区间应当是负数范围 N 1 2 0 和非负数范围 0 N 1 2 1 的合集 补充 C语言中几种整型数据有符号和无符号数存储范围对比 以32位操作系统为例 2 4实型数据 C语言使用实型数据类型来描述小数根据存储空间的不同 C语言中的实型数据主要分为以下几种 float 单精度浮点数 可以精确到小数点后6 7位 占用4个字节存储 double 双精度浮点数 可以精确到小数点后16 17位 占用8个字节存储 实型数据在电脑中主要以两种方式来表示小数方式表示 如3 1214 0 521 112 42 指数方式表示 如7 819E3 1 33E10 2 44E 1 注 在C语言中 3 4f表示这个数值是float型单精度浮点数 而3 4表示这个数值是double型双精度浮点数值 2 5字符数据 什么是字符数据 字符数据指那些构成文本信息的数据 如英文字母 阿拉伯数字 标点符号等等 这类数据主要是用来和人沟通交流用的 如果仅仅只有前面提到的纯数字数据 那么人机交流会存在很大障碍 呈现在电脑前的只有一串串数字而非人们可以理解的文本信息 字符数据的表现方式 单个字符以单引号括起来 如 1 a 等等 但是对于汉字来说 因为每个汉字由两个字符构成的 所以不能用这种方法来表示 2 5字符数据 一串字符用双引号括起来 如 abc 123 hello 等等 我们把这一串串表示的字符称为字符串 字符串末尾都会有一个字符 0 来表示字符串的结束 这里的字符 0 在单引号内虽然有两个字符 但是它表示的是一个转义后的特殊字符 并不是字符 0 不论是在字符或字符串中 都有一个特殊的字符 在C语言里称它为转移符 它从不单独出现 总是和其它字符一起构成一个单独的字符 如 n 换行符 等等 如果 符号后跟的是数字 那么这个数字必然是八进制的 而且这个后的字符的ASCII码就是这个值 如字符A的ASCII码是65 那么字符 101 表示的和 A 是相同的 都是字符A 单个字符在内存中只占用1个字节 其存储的内容为该字符在ASCII码表中对应的数值 思考 a a 是相同的吗 2 6变量的定义和赋值 C语言中的数据有两种基本形式 常量和变量 常量的值是固定的 变量是可以改变的变量的定义类型标识符变量名 变量在定义时要注意以下几个问题 变量的命名要符合C语言规定的标识符的命名规则 即只能由字母 数字和下划线组成 首字母必须为字母或下划线 此外C语言中规定的有特殊用途的关键字 例如int float if等 不能作为变量名称 ab2stu1x1 1sum name1正确2acstu 1len 1elseintfloat不正确C语言中大小写是敏感的 但是习惯上 C中的变量一般用小写字母表示 2 6变量的定义和赋值 关键字C语言的关键字共有32个 根据关键字的作用 可分其为数据类型关键字 控制语句关键字 存储类型关键字和其它关键字四类 1 数据类型关键字 12个 char int long short float double signed unsigned void struct union enum 2 控制语句关键字 12个 if else switch case break default continue do while for goto return 3 存储类型关键字 4个 auto extern register static 4 其它关键字 4个 const sizeof typedef volatile 2 6 1变量的定义 变量的数据类型决定了它的存储类型 即该变量占用的存储空间 所以定义变量类型 就是为了给该变量分配存储空间 以便存放数据 基本的变量类型及其存储空间见表2 1 2 6 2变量的赋值 变量需要预置一个值 即赋值 赋值操作通过赋值符号 把右边的值赋给左边的变量 变量名 表达式 例如x 3 a a 1 f 3 4 2 2 6 2变量的赋值 其中需要注意的是 如果赋值时两侧类型不一致时 系统将会作如下处理 将实数赋给一个整型变量时 系统自动舍弃小数部分 将整数赋给一个浮点型变量时 系统将保持数值不变并且以浮点小数形式存储到变量中 当字符型数据赋给一个整型变量时 系统将整型变量的高字节置0 低字节存放该字符的ASCII值 程序L2 1 C功能 赋值时类型自动的转换示例 includemain inta x floatf a 3 9 f 12 x A printf a d f f x d n a f x 运行结果 a 3 f 12 000000 x 65 程序L2 2 C功能 将字符 A 赋值给字符变量的四种方法 includemain charc1 c2 c3 c4 c1 A c2 65 c3 101 c4 x41 printf c1 c c2 c c3 c c4 c n c1 c2 c3 c4 printf c1 d c2 d c3 d c4 d n c1 c2 c3 c4 思考 c1 c2 c3 c4加上32输出结果是什么 加上256呢 2 7C语言类型修饰符 基本类型可以带修饰性前缀 即类型修饰符 扩大C语言基本数据类型的使用范围 C语言共有4种类型修饰符 long长型short短型signed有符号型unsigned无符号型longint 简写为long 型的存储长度为4个字节 用于存储整数超过int型取值范围的情况 longdouble型存储长度12个字节 约20位有效数字 取值范围超过double型 除此以外 long还可以修饰的有long自己 longlong代表64为整型 其它的都不能用long来修饰 有符号型signed和无符号型unsigned适用于char型 int型和long型三种类型 区别在于它们的最高位是否作为符号位 unsignedchar型取值范围0 255 unsignedint 简写为unsigned 型取值范围0 232 1 unsignedlong型取值范围0 232 1 程序L2 3 C功能 类型修饰符long和unsigned的使用 includemain chara1 b1 unsignedchara2 b2 shortx1 y1 longx2 y2 a1 127 b1 129 a2 127 b2 129 x1 32767 y1 32769 x2 32767 y2 32769 printf a1 d a2 u b1 d b2 u n a1 a2 b1 b2 printf x1 d x2 ld y1 d y2 ld n x1 x2 y1 y2 2 7 1表达式中数据类型转换 自动类型转换C语言规定 不同类型的数据在参加运算前会自动转换成相同类型 再进行运算 转换的规则是 如果运算的数据有float型或double型 自动转换成double型再运算 结果为double型 如果运算的数据中无float型或double型 但是有long型 数据自动转换成long型再运算 结果为long型 其余情况为int型 double float long unsigned int char short 高低 程序L2 4 C功能 自动类型转换示例 includemain floatx y longm n x 3 2 8 3 y 3 0 2 8 3 0 m 1 2 3 4 5 6 7 8 9 n 1L 2 3 4 5 6 7 8 9 printf x f y f m ld n ld n x y m n 结果 X 3 000000 y 4 166667 m 30336 n 362880 2 7 1表达式中数据类型转换 强制类型转换在C语言中也可以使用强制类型转换符 强迫表达式的值转换为某一特定类型 强制类型转换形式为 类型 表达式强制类型转换最主要的的用途一是满足一些运算对类型的特殊要求 例如求余运算符 要求运算符两侧的数据为整型 int 2 5 3二是防止丢失整数除法中的小数部分 2 8计算机中数据的表示 计算机最主要的功能是处理数据 如数值 文字 图形 图像等 而这些数据必须被转换为相应的数字编码 才能进行存储和处理 二进制 八进制 十六进制进制之间的转换二进制数在内存中的表示字符编码 程序L2 5 C 十进制 八进制 十六进制数据及其输出 includemain inta b c m n a 11 b 011 c 0 x11 m 65 n 97 printf 十进制11等于 d 八进制11等于 d 十六进制11等于 d n a b c printf 十进制八进制十六进制字符 n printf 65 o x c n m m m
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年心理学专业硕士考研复习资料社会心理学方向
- 2025年版权保护仲裁员遴选考试模拟题与解析参考
- 2025年网络安全工程师岗位应聘模拟题和答案解析
- 电力基础知识培训课件
- 2025年运维工程师中级考试模拟题集及实战经验
- 2025年特岗教师招聘美术学科考试重点难点解析与复习建议
- 2025年产品经理高级面试指南及实战模拟题解答
- 2025年炼钢工艺流程详解与中级考试模拟题
- 电催员基础知识培训总结
- 2025年焊接专业求职面试攻略钎焊热点模拟题及答案解析
- 第9课-秦统一中国【课件】1
- 2024年天翼云认证高级开发工程师考试题库-多选题、判断题
- 园林绿化资料范例
- GB/T 44519-2024工业阀门阀门用齿轮箱
- 万达入职性格在线测评题
- 中华人民共和国标准设计施工总承包招标文件(2012年版)
- 保险公司与定点医院合作协议书(2篇)
- 数学七年级上册《合并同类项》说课-课件
- Magic Tree House 神奇树屋词汇大全
- 四川省中小学生健康体检表
- 广东省中山一中、仲元中学等七校2025届高一数学第二学期期末统考试题含解析
评论
0/150
提交评论