已阅读5页,还剩78页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
C语言程序设计 第三章数据类型与运算规则 本章内容 数据与数据类型C语言的基本数据类型及其表示算术运算与赋值运算其他运算混合运算及数据类型转换应用示例 3 1数据与数据类型 C语言提供了以下一些数据类型 数据类型 构造类型 指针类型 空类型 无值类型 void 3 2C语言的基本数据类型及其表示 常量 在程序运行过程中 其值不能被改变的量称为常量 变量 在程序运行过程中 其值能够被改变的量称为变量 一 常量与变量 常量分类 直接常量 符号常量 整型100 125 100 0实型3 14 0 125 3 789字符型 a b 2 字符串 a ab 1232 1 直接常量数值常量 字符常量 字符串常量 2 符号常量 用标识符代表常量 定义格式 define标识符常量值一般用大写字母是宏定义预处理命令 不是C语句 目的 增加程序的可维护性 例 符号常量的使用 definePRICE30 includevoidmain intnum total num 10 total num PRICE printf total d n total 说明 程序中用 define命令行定义PRICE代表常量30 此后凡在本文件中出现的PRICE都代表30 可以和常量一样进行运算 说明 用一个标识符代表一个常量的 称为符号常量 即以标识符形式出现的常量 符号常量的值在其作用域 在本例中为主函数 内不能改变 也不能再被赋值 说明 如再用赋值语句给PRICE赋值是错误的 PRICE 40 错误 不能给符号常量赋值 运行结果 total 300 2 变量变量值 变量代表内存中具有特定属性的一个存储单元 它用来存放数据 该数据就是变量的值 在程序运行期间 这些值是可以改变的 变量名 实际上是对应地址单元的符号化表示 在对程序编译连接时由编译系统给每一个变量名分配对应的内存地址 从变量中取值 实际上是通过变量名找到相应的内存地址 从该存储单元中读取数据 变量命名的规定 语言规定标识符只能由字母 数字和下划线三种字符组成 且第一个字符必须为字母或下划线 注意 编译系统将大写字母和小写字母认为是两个不同的字符 建议变量名的长度最好不要超过8个字符 在选择变量名和其它标识符时 应注意做到 见名知意 即选有含意的英文单词 或其缩写 作标识符 要求对所有用到的变量作强制定义 也就是 先定义 后使用 变量定义后必须赋初值才能使用 即进行变量初始化 变量的初始化 数据类型说明符变量名1 常量或表达式 变量名2 常量或表达式 或变量名 常量或表达式 初始化变量的简单格式 变量的定义 类型关键字变量名1 变量名2 实例 floatf1 f2 f3 f1 2 46f charc a longlength sum width 23 length 120 二 整型数据及其表示 1 整型常量的表示方法整型常量即整常数 在 语言中 整常数可用以下三种形式表示 1 十进制整数 如 123 456 4 2 八进制整数 以0头的数是八进制数 如 0123表示八进制数123 等于十进制数83 011表示八进制数 11 即十进制数 9 3 十六进制整数 以0 x开头的数是16进制数 如 0 x123 代表16进制数123 等于十进制数291 0 x12等于十进制数 18 2 整型变量1 整型数据在内存中的存放形式数据在内存中是以二进制形式存放的 如 inti 定义为整型变量 i 10 给i赋以整数10 注意 十进制数10的二进制形式为1010 TurboC2 0中为一个整型变量在内存中分配2个字节的存储单元 不同的编译系统为整型数据分配的字节数是不相同的 VC 6 0则分配4个字节 数值是以补码 complement 表示的 2 整型变量的分类 共六种 有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型 signed int signed short int signed long int unsignedintunsignedshort int unsignedlong int 注意 括号表示其中的内容是可选的 整数类型的有关数据 3 整型变量的定义 规定在程序中所有用到的变量都必须在程序中定义 即 强制类型定义 例如 inta b 指定变量 为整型 unsignedshortc d 指定变量 为无符号短整型 longe f 指定变量 为长整型 例 整型变量的定义与使用 includevoidmain inta b c d 指定 为整型变量 unsigned 指定 为无符号整型变量 12 24 10 printf 说明 可以看到不同种类的整型数据可以进行算术运算 运行结果 例 整型数据的溢出 includevoidmain inta b a 32767 b a 1 printf d d n a b 说明 数值是以补码表示的 一个整型变量只能容纳 32768 32767范围内的数 无法表示大于32767或小于 32768的数 遇此情况就发生 溢出 运行结果 32767 32768 3 整型常量的类型1 一个整数 如果其值在 32768 32767范围内 认为它是int型 它可以赋值给int型和longint型变量 2 一个整数 如果其值超过了上述范围 而在 2147483637 2147483647范围内 则认为它是为长整型 可以将它赋值给一个longint型变量 3 如果所用的C版本 如TurboC 分配给shortint与int型数据在内存中占据的长度相同 则它的表数范围与int型相同 因此一个int型的常量同时也是一个shortint型常量 可以赋给int型或shortint型变量 4 一个整常量后面加一个字母u或U 认为是unsignedint型 如12345u 在内存中按unsignedint规定的方式存放 存储单元中最高位不作为符号位 而用来存储数据 如果写成 12345u 则先将 12345转换成其补码53191 然后按无符号数存储 5 在一个整常量后面加一个字母l或L 则认为是longint型常量 例如123l 432L 0L等 这往往用于函数调用中 如果函数的形参为longint型 则要求实参也为longint型 三 实型数据及其表示 1 浮点型常量的表示方法 两种表示形式 小数指数 0 1233e 3 注意 字母e 或E 之前必须有数字 且e后面的指数必须为整数 1e3 1 8e 3 123e 6 1e 3e3 2 1e3 5 e3 e 规范化的指数形式 在字母e 或E 之前的小数部分中 小数点左边应有一位 且只能有一位 非零的数字 例如 123 456可以表示为 123 456e0 12 3456e1 1 23456e2 0 123456e3 0 0123456e4 0 00123456e其中的1 23456e2称为 规范化的指数形式 2 浮点型变量1 浮点型数据在内存中的存放形式一个浮点型数据一般在内存中占4个字节 32位 与整型数据的存储方式不同 浮点型数据是按照指数形式存储的 系统把一个浮点型数据分成小数部分和指数部分 分别存放 指数部分采用规范化的指数形式 3个字节 1个字节 2 浮点型变量的分类浮点型变量分为单精度 float型 双精度 double型 和长双精度型 longdouble 三类形式 例 浮点型数据的舍入误差 includevoidmain floata b a 123456 789e5 b a 20 printf f n b 说明 一个单精度浮点型变量只能保证的有效数字是7位有效数字 后面的数字是无意义的 并不准确地表示该数 应当避免将一个很大的数和一个很小的数直接相加或相减 否则就会 丢失 小的数 运行结果 12345678848 000000 3 浮点型常量的类型C编译系统将浮点型常量作为双精度来处理 例如 f 2 45678 4523 65系统先把2 45678和4523 65作为双精度数 然后进行相乘的运算 得到的乘也是一个双精度数 最后取其前7位赋给浮点型变量f 如是在数的后面加字母f或F 如1 65f 654 87F 这样编译系统就会把它们按单精度 32位 处理 四 字符型数据 1 字符常量 1 用单引号包含的一个字符是字符型常量 2 只能包含一个字符 例 a A 1 abc a 有些以 开头的特殊字符称为转义字符 n换行 t横向跳格 b退格 r回车 反斜线 单引号字符 双引号字符 dddddd表示1到3位八进制数字 xhhhh表示1到2位十六进制数字 101 A 012 n 141 a x61 a 060 0 483 例转义字符举例 includevoidmain printf 101 x42C n printf Isay Howareyou n printf CProgram n printf Turbo C 运行结果 屏幕显示 ABCIsay Howareyou CProgram Turbo C 例voidmain printf Y b n 运行结果 屏幕显示 例如 2 字符变量字符型变量用来存放字符 注意只能放一个字符 字符变量的定义形式如下 charc1 c2 可以用下面语句对c1 c2赋值 c1 a c2 b 一个字符变量在内存中占一个字节 3 字符数据在内存中的存储形式及其使用方法将一个字符存放到一个字符变量中 实际上并不是把该字符本身放到内存单元中去 而是将该字符的相应的ASCII代码放到存储单元中 这样使字符型数据和整型数据之间可以通用 一个字符数据既可以以字符形式输出 也可以以整数形式输出 例 向字符变量赋以整数 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 例 大小写字母的转换 includevoidmain charc1 c2 c1 a c2 b c1 c1 32 c2 c2 32 printf c c c1 c2 说明 程序的作用是将两个小写字母a和b转换成大写字母A和B 从ASCII代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32 语言允许字符数据与整数直接进行算术运算 运行结果 4 字符串常量字符串常量是一对双撇号括起来的字符序列 合法的字符串常量 Howdoyoudo CHINA a 123 45 可以输出一个字符串 如printf Howdoyoudo a 是字符常量 是字符串常量 二者不同 如 假设 被指定为字符变量 charc c a c a c CHINA 结论 不能把一个字符串常量赋给一个字符变量 规定 在每一个字符串常量的结尾加一个 字符串结束标志 以便系统据此判断字符串是否结束 中以字符 作为字符串结束标志 如 如果有一个字符串常量 实际上在内存中是 它占内存单元不是 个字符 而是 个字符 最后一个字符为 0 但在输出时不输出 0 3 3运算符与表达式 一 运算符简介计算机与运算密不可分 要运算就必须要有运算符和运算量 那么 什么是运算符 什么是运算量呢 例 1 2 运算量 运算符 二 运算符的分类1 根据参加运算的操作数的数目不同 单目运算符双目运算符三目运算符 目 一个运算符能连接的对象的个数 3 3运算符与表达式 2 按照完成的运算来分 1 算术运算符 2 关系运算符 3 逻辑运算符 4 位运算符 5 赋值运算符 及其扩展赋值运算符 6 条件运算符 7 逗号运算符 3 3运算符与表达式 8 指针运算符 和 9 求字节数运算符 sizeof 10 强制类型转换运算符 类型关键字 11 分量运算符 12 下标运算符 13 其他 如函数调用运算符 3 3运算符与表达式 三 运算符的优先级与结合性 优先级 多个运算符组合运算时的先后顺序 例 a b c 结合性 操作数两边的运算符优先级相同时 运算方向是从左向右 还是从右向左 例 a b c 3 3运算符与表达式 表达式 使用运算符和括号将运算对象连接起来 符合语法规则的式子 例 a b c 1 5 a C规定了运算符的优先级和结合性 在表达式求值时 按运算符的优先级别高低次序执行 3 3运算符与表达式 四 C运算符的优先级高初等运算符 单目运算符 算术运算符 关系运算符 逻辑运算符 条件运算符 赋值运算符 低逗号运算符 3 3运算符与表达式 五 C运算符的结合性单目运算符 自右向左结合双目运算符 自左向右结合例 voidmain inta b 3 c 5 a b c printf d d d n a b c 3 3运算符与表达式 一 算术运算符和算术表达式1 基本的算术运算符 加法运算符 或正值运算符 如 减法运算符 或负值运算符 如 乘法运算符 如 除法运算符 如 模运算符 或称求余运算符 两侧均应为整型数据 如 的值为 3 4算术运算与赋值运算 基本算术运算符优先级与结合性 优先级 同级 高 同级 低 结合性 相同优先级运算符进行运算时的次序自左向右 标记为 3 4算术运算与赋值运算 注意事项 1 乘号和除号的书写方式 2 整数除以整数的结果是整数 3 两整数相除 且其中一个为负 结果随编译系统的不同而不同 大多数按 向零取整 的方法处理 4 算术表达式中经常使用圆括号来表示运算的次序 括号必须成对使用 括号优先 算术运算实例1 参加运算的对象都是int型 结果截取为int型 10 3 10 0 3 1 2 10 5 3 11 3 11 3 1 2 10 5 3 33 33333306 33 6666670 50 2 求余运算的对象必须是整型 整数除法的余数 9 3 1 3 10 3 10 3 10 3 10 3 01 1 11 1 2 自增 自减运算符作用 使变量的值增 或减 自增 自减 注意 1 和 为单目运算 只能作用于变量 2 只能对整型 字符型和指针变量进行运算 3 4算术运算与赋值运算 功能 xx x 1 xx x 1 前缀 x x x 1x x x 1 后缀 3 4算术运算与赋值运算 自增 自减 有前缀和后缀之分 前缀形式 先自增 自减 再引用后缀形式 先引用 再自增 自减 前缀与后缀的区别 y x x x 1 y x x先加1再赋值y x y x x x 1 x先赋值再加1 实例 1 i i 因为在表达式中没有其它运算 结果一样 2 x 1 y x 结果 x 2 y 2y x x x 1 y x 在做赋值运算之前 x先加1 然后将x赋给y 3 x 1 y x 结果 x 2 y 1y x y x x x 1 先将x赋值给y 然后x再加1实例 实例已知 intx 2 y 5 z z x z x y z x y z x y z x y x 3 z 3x 3 y 6 z 3 6 18x 3 y 6 z 2 6 12x 3 y 6 z 3 5 15x 3 y 6 z 2 5 10 注意 以下操作是错误的 x i j 1 如果可用 那么自增之后得到的值存放在什么地方呢 intd 3 3是常量 常量值不能改变 3 4算术运算与赋值运算 自增和自减运算符使用十分灵活 但在很多情况下可能出现歧义 产生意想不到的副作用 例 inti 3 printf d d n i i 输出结果3 3 4 3 不要写出别人看不懂的也不知道系统会怎样执行程序 又如 i的初值为3 有以下表达式 i i i 表达式内的值为多少呢 编程时要遵循安全第一 易于理解的原则 可写成 i 3 a i b i c i d a b c 说明 1 自增 自减运算 常用于循环语句中 使循环控制变量加 或减 以及指针变量中 使指针指向下 或上 一个地址 2 自增 自减运算符 不能用于常量和表达式 例如 5 a b 等都是非法的 3 在表达式中 连续使变量进行自增或自减运算时 很容易出错 所以最好避免这种用法 例 不要写成i j的形式 而应写成 i j的形式 二 赋值运算符 双目 赋值符号 就是赋值运算符 它的作用是将一个数据赋给一个变量 如 是执行一次赋值操作 或称赋值运算 把常量 赋给变量 也可以将一个表达式的值赋给一个变量 如 a 3 5 3 4算术运算与赋值运算 三 赋值组合运算符 双目 表示方式 e1op e2等价于 e1 e1op e2 其中 op为下列10个运算符之一 e1为可以进行赋值操作的变量 e2为合法的表达式或常量 结合性 从右向左 例 x 2 x x 2 x y 1 x x y 1 不等价x x y 1 注意 如果赋值号右侧是包含若干项的表达式 则相当于它有括号 3 4算术运算与赋值运算 赋值运算中 将赋值运算符右边的数据转变为左边的变量类型 说明 多种数据类型进行混合运算时 将低类型的数据转换为高类型 3 4算术运算与赋值运算 四 赋值表达式由赋值运算符将一个变量和一个表达式连接起来的式子称为 赋值表达式 一般形式为 例如 5 是一个赋值表达式 3 4算术运算与赋值运算 对赋值表达式求解的过程是 求赋值运算符右侧的 表达式 的值 赋给赋值运算符左侧的变量 例如 赋值表达式 3 5 执行表达式后 变量a的值也是15 注意 一个赋值表达式应该有一个值 赋值表达式的值就是被赋值的变量的值 3 4算术运算与赋值运算 赋值表达式也可以包含复合的赋值运算符 如 a a a a 分析 此赋值表达式的求解步骤如下 先进行 的运算 它相当于 a的值为 144 132 再进行 的运算 相当于 a 132 a的值为 132 132 264 3 4算术运算与赋值运算 将赋值表达式作为表达式的一种 使赋值操作不仅可以出现在赋值语句中 而且可以以表达式形式出现在其他语句 如输出语句 循环语句等 中 如 printf d a b 分析 如果b的值为3 则输出a的值 也是表达式a b的值 为3 在一个语句中完成了赋值和输出双重功能 3 4算术运算与赋值运算 一 逗号运算符逗号运算符 将两个表达式连接起来 又称为 顺序求值运算符 如 5 3 5其他运算 一般形式 表达式 表达式 求解过程 先求解表达式 再求解表达式 整个逗号表达式的值是表达式 的值 逗号表达式的值为14 例 逗号表达式 5 分析 赋值运算符的优先级别高于逗号运算符 因此应先求解 5 的值为 5 然后求解 得 整个逗号表达式的值为 一个逗号表达式又可以与另一个表达式组成一个新的逗号表达式如 a 5先计算出 的值等于 再进行 的运算得60 但 值未变 仍为15 再进行 得 即整个表达式的值为 3 5其他运算 逗号表达式的一般形式可以扩展为表达式 表达式 表达式 表达式 它的值为表达式 的值 逗号运算符是所有运算符中级别最低的例 3 赋值表达式 将一个逗号表达式的值赋给 的值等于 逗号表达式 包括一个赋值表达式和一个算术表达式 的值为 整个逗号表达式的值为18 3 5其他运算 注意 并不是任何地方出现的逗号都是作为逗号运算符 例如函数参数也是用逗号来间隔的 如 printf d d d a b c 并不是一个逗号表达式 它是printf函数的3个参数 printf d d d a b c b c 是一个逗号表达式 它的值等于 的值 3 5其他运算 在许多情况下 使用逗号表达
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年房地产经纪协理之房地产经纪操作实务考试题库带答案(基础题)
- 2025年滨州无棣县财金投资集团有限公司公开招聘高层次人才备考公基题库附答案解析
- 2026年消防条令纲要知识考试题库及答案
- 中翼航空投资有限公司(北京航食)2026届高校毕业生校园招聘历年真题汇编及答案解析(夺冠)
- 2026国家移民管理局直属事业单位招聘事业编制人员16人备考公基题库附答案解析
- 2025山东滨州无棣县财金投资集团有限公司招聘高层次人才2人历年真题库带答案解析
- 2025广西北海市中日友谊中学秋季学期教师招聘2人备考公基题库附答案解析
- 2025广东南粤银行重庆分行招聘历年真题汇编附答案解析
- 参考题库附答案解析
- 2025北京市房山区卫生健康委员会所属事业单位招聘高层次专业技术人才9人模拟试卷附答案解析
- 《高分子化学》课件
- 世界卫生组织(who)饮用水水质标准
- 保险业反洗钱培训
- 《笔算除法三位数除以一位数》-完整版课件
- (转正申请书)护士入职转正申请书5篇
- 小学生简笔画社团活动记录
- 财务人员登记表参考模板范本
- 教学课件 金属学与热处理-崔忠圻
- Q∕SY 1180.3-2014 管道完整性管理规范 第3部分:管道风险评价
- 安全工器具介绍学习培训课件
- 光伏组件培训全ppt课件(PPT 77页)
评论
0/150
提交评论