C语言第2章数据的存储与运算.ppt

上传人:max****ui 文档编号:6334327 上传时间:2020-02-23 格式:PPT 页数:97 大小:820.05KB
返回 下载 相关 举报
C语言第2章数据的存储与运算.ppt_第1页
第1页 / 共97页
C语言第2章数据的存储与运算.ppt_第2页
第2页 / 共97页
C语言第2章数据的存储与运算.ppt_第3页
第3页 / 共97页
点击查看更多>>
资源描述
第二章 数据的存储与运算 本章要点 数据的描述规则数据的操作规则 主要内容 2 1数据在计算机中是怎样存储的2 2整型数据的运算与分析2 3实型数据的运算与分析2 4字符型数据的运算2 5符号常量2 6算术运算符和算术表达式2 7C运算符和C表达式2 8提高部分 2 1数据在计算机中是怎样存储的 2 1 1数据在计算机中是以二进制形式存储的 计算机内部的信息都是用二进制来表示的 二进制数的特点是 逢二进一 每一位的值只有0和1两种可能 例如 十进制数10 用二进制表示是1010 它的含义是 每一个二进位代表不同的幂 最右边一位代表2的0次方 最右边第二位代表2的1次方 以此类推 显然一个很大的整数可能需要几十个 二进制位 来表示 2 1数据在计算机中是怎样存储的 2 1 2位 字节和地址 位 又称 比特 bit 每一个物理元件称为一个 二进制位 是存储信息的最小单位 它的值是 1 或 0 字节 又称 拜特 byte 一般将8个 二进制位 组织成一组 称为 字节 地址 计算机的存储器包含许多存储单元 操作系统把所有存储单元以字节为单位编号 2 1数据在计算机中是怎样存储的 2 1 3不同类型数据的存储方式 整数的存储方式十进制整数先转换为二进制形式 例如 整数10以二进制形式表示是1010 直接把它存放在存储单元中 实数的存储形式实数采用指数形式存储 例如 123 456可以写成标准化指数形式0 123456 它包括前后两个部分 前面部分是数值部分 后面部分是指数部分 0 123456 数值部分指数部分 说明 标准化指数形式 其数值部分是一个小数 小数点前的数字是零 小数点后的第一位数字不是零 一个实数可以有多种指数表示形式 但只有一种属于标准化指数形式 2 1数据在计算机中是怎样存储的 3 字符的存储方式 字符包括字母 如A a X x 专用字符 如 等 计算机并不是将该字符本身存放到存储单元中 存储单元只能存储二进制信息 而是将字符的代码存储到相应的存储单元中 具体说是代码的二进制形式 附录B是字符与代码的对照表 这是国际通用的ASCII代码 2 2整型数据的运算与分析 鸡兔同笼 在一个笼子里同时养着一些鸡和兔子 你想了解有多少只鸡和多少只兔 主人对你说 我只告诉你鸡和兔的总头数是16 总脚数是40 你能不能自己计算有多少只鸡和多少只兔 设 x 鸡数量y 兔数量 h 总头数f 总脚数有方程式 例题2 1 解题思路 x y h 1 2x 4y f 2 求x和y的公式 2 式 2 1 式 2y f 2hy 2 2 1整型数据运算程序举例和分析 2 2整型数据的运算与分析 includevoidmain inth f x y 定义整型变量h f x y h 16 对整型变量h赋值 使h的值等于16 f 40 对整型变量f赋值 使h的值等于40 y f 2 h 2 对表达式 f 2 h 2进行运算 把结果赋给y x h y 对表达式h y进行运算 把结果赋给x printf d d n x y 输出鸡的个数和兔的个数 编写程序 说明 1 运行时显示 124 2 程序改进 printf d d n x y 3 再改进 printf cock d rabbit d n x y 注意 用计算机解题 必须由人们事先分析题目要求 找出解题思路和具体处理步骤 计算机完全是根据人们事先规定的指令进行工作的 程序就是用来告诉计算机要做什么 先作什么 后做什么 有人认为计算机是万能的 以为将方程式输入计算机 计算机就能够给出方程解 这在C语言里是行不通的 是不合乎C语言的语法和语义的 是因为不了解计算机的工作方式而引起的一种误解 2 2整型数据的运算与分析 1 常量在程序运行过程中 其值不能被改变的量称为常量常量区分为不同的类型 整型100 125 100 0实型3 14 0 125 3 789字符型 a b 2 字符串 a ab 1232 2 2 2整型常量和整型变量 2 2整型数据的运算与分析 2 变量变量代表内存中具有特定属性的一个存储单元 它用来存放数据 这就是变量的值 在程序运行期间 这些值是可以改变的 不同类型的变量的存储特性是不一样的 变量名实际上是与变量地址相对应的 在对程序编译连接时 由编译系统给每一个变量名分配对应的内存地址 从变量中取值 实际上是通过变量名找到相应的内存地址 从该存储单元中读取数据值 2 2整型数据的运算与分析 includevoidmain inth f x y 定义整型变量h f x y h 16 对整型变量h赋值 使h的值等于16 f 40 对整型变量f赋值 使h的值等于40 y f 2 h 2 对表达式 f 2 h 2进行运算 把结果赋给y x h y 对表达式h y进行运算 把结果赋给x printf d d n x y 输出鸡的个数和兔的个数 h f x y 0101010101 01011101010 0111010111 0101111101 2 2整型数据的运算与分析 includevoidmain inth f x y 定义整型变量h f x y h 16 对整型变量h赋值 使h的值等于16 f 40 对整型变量f赋值 使h的值等于40 y f 2 h 2 对表达式 f 2 h 2进行运算 把结果赋给y x h y 对表达式h y进行运算 把结果赋给x printf d d n x y 输出鸡的个数和兔的个数 16 40 h f x y 0101010101 01011101010 0111010111 0101111101 2 2整型数据的运算与分析 includevoidmain inth f x y 定义整型变量h f x y h 16 对整型变量h赋值 使h的值等于16 f 40 对整型变量f赋值 使h的值等于40 y f 2 h 2 对表达式 f 2 h 2进行运算 把结果赋给y x h y 对表达式h y进行运算 把结果赋给x printf d d n x y 输出鸡的个数和兔的个数 16 40 12 4 h f x y 0101010101 01011101010 0111010111 0101111101 2 2整型数据的运算与分析 includevoidmain inth f x y 定义整型变量h f x y h 16 对整型变量h赋值 使h的值等于16 f 40 对整型变量f赋值 使h的值等于40 y f 2 h 2 对表达式 f 2 h 2进行运算 把结果赋给y x h y 对表达式h y进行运算 把结果赋给x printf d d n x y 输出鸡的个数和兔的个数 16 40 12 4 h f x y 0101010101 01011101010 0111010111 0101111101 124Pressanykeytocontinue 2 2整型数据的运算与分析 3 整型常量整型常量即整常数 在 语言中 整常数可用以下三种形式表示 十进制整数 123 456 4八进制整数 以0头的数是八进制数 如 0123表示八进制数123 等于十进制数83 011表示八进制数 11 即十进制数 9 十六进制整数 以0 x开头的数是16进制数 如 0 x123 代表16进制数123 等于十进制数291 0 x12等于十进制数 18 includevoidmain inth f h 012 f 0 x12 printf d n d n f h 2 2整型数据的运算与分析 4 整型变量整型数据在内存中的存放形式数据在内存中是以二进制形式存放的 如 inti 定义为整型变量 i 10 给i赋以整数10 实际存的是1010 2 2整型数据的运算与分析 注意 十进制数10的二进制形式为1010 TurboC2 0和TurboC 3 0为一个整型变量在内存中分配2个字节的存储单元 不同的编译系统为整型数据分配的字节数是不相同的 VC 6 0则分配4个字节 数值是以补码表示的 例如 有说明 inta intb intb0X0066FDF0 inta0X0066FDEC 程序被编译后 系统对已声明对象保存一张登记表 登记如下属性C语言允许通过变量名或变量地址来访问它 对于数据单元 通过变量名可以进行访问访问形式分为 读 和 写 例如 inta b a 10 b 20 a a b 例如 inta b a 10 b 20 a a b 建立内存对象 例如 inta b a 10 b 20 a a b 写操作 10 例如 inta b a 10 b 20 a a b 写操作 10 20 例如 inta b a 10 b 20 a a b 读操作 10 20 例如 inta b a 10 b 20 a a b 写操作 10 20 30 课堂练习 提示用户输入整型变量a和b的值 交换a和b 输出交换后的结果 2 3实型数据的运算与分析 2 3 1实型数据的运算举例 例题2 2 分期付款月数的计算 已知计算公式如下 m log10 p log10 p d r log10 1 r 其中 d 贷款额 p 每月还款数 r 月利率 m 还清贷款所需月数张先生为购房而向银行贷款 贷款额d为324500元 每月还款额p为3245元 月利率r为0 8 求需要多少个月才能还清 所需还款总额是多少 碰到小数了需用float或者double 2 3实型数据的运算与分析 include 用输入输出函数时必须用 stdio h 头文件 include 用数学函数时必须用 math h 头文件 voidmain intd p 定义d和p为整型变量 floatr m 定义r和m为实型变量 d 324500 给整型变量d赋值 p 3245 给整型变量p赋值 r 0 008 给实型变量r赋值 m log10 p log10 p d r log10 1 r 通过公式求m的值 printf month f n m 输出m的值 f用于浮点型数据的输出 printf total f n m p 计算并输出总的还款数 编写程序 说明 1 include是 包含头文件 的命令 调用系统提供的库函数 见附录F 2 C编译系统把所有实 float 型常量 如0 008 和log10函数的值都作为双精度数据来处理 在把它们赋给float型变量时可能会丧失一些精度 在编译时出现 警告 不属于致命性错误 可以将r和m改定义为double型 3 可以在定义变量时同时赋初值intd 324500 p 3245 doubler 0 008 4 运行结果 month 201 983404 total 655436 127930 2 3实型数据的运算与分析 2 3 2实型常量的表示形式 两种表示形式 小数指数 0 123123e 3 注意 字母e 或E 之前必须有数字 且e后面的指数必须为整数 1e3 1 8e 3 123e 6 1e 3e3 2 1e3 5 e3 e 二者在内存中什么样 includevoidmain doubleh f h 0 123 f 123e 3 printf f n f n f h 2 3实型数据的运算与分析 标准化的指数形式 其数值部分是一个小数 小数点前的数字是零 小数点后的第一位数字不是零 用于存储 规范化的指数形式 在字母e 或E 之前的小数部分里面 小数点左边应有一位 且只能有一位 非零的数字 用于输出 例如 123 456可以表示为 123 456e0 12 3456e1 1 23456e2 0 123456e3 0 0123456e4 0 00123456e5其中的1 23456e2称为 规范化的指数形式 用于输出 其中的0 123456e3称为 标准化的指数形式 用于存储 e代表指数形式输出 f代表小数形式输出 includevoidmain doubleh f h 0 123 f 123e 3 printf e n e n f h 2 3实型数据的运算与分析 2 3 3实型变量 1 实型变量的分类浮点型变量分为单精度 float型 双精度 double型 和长双精度型 longdouble 三类形式 数值大小 数值精度 2 3实型数据的运算与分析 2 实型数据在内存中的存放形式一个浮点型数据一般在内存中占4个字节 32位 与整型数据的存储方式不同 浮点型数据是按照指数形式存储的 系统把一个浮点型数据分成小数部分和指数部分 分别存放 采用标准化的指数形式 例2 3实型数据的舍入误差 说明 一个实型变量只能保证的有效数字是7位有效数字 后面的数字是无意义的 并不准确地表示该数 应当避免将一个很大的数和一个很小的数直接相加或相减 否则就会 丢失 小的数 运行结果 12345678868 includevoidmain floata b a 123456 789e5 b a 20 printf f n b 思考 如何修改程序可以避免舍入误差 2 3实型数据的运算与分析 3 把实数按双精度数处理C编译系统将浮点型常量作为双精度来处理 includevoidmain floata a 123 45 printf f n a 编译器警告 双精度到单精度的转换 意思是可能会有精度损失了 一般而言 不妨把实数定义成双精度 这样可以避免精度不够的问题 确实不需要的除外 但是常数以双精度处理 如果在常数后面加字母f或F 如1 65f 654 87F 则编译器会把它们按单精度处理 2 3实型数据的运算与分析 3 把实数按双精度数处理C编译系统将浮点型常量作为双精度来处理 例如 floatf f 2 45678 4523 65 系统先把2 45678和4523 65作为双精度数进行相乘运算 得到的乘也是一个双精度数 最后取其前7位赋给浮点型变量f 编译器将给出警告 但不影响程序的正确性 只是精度上产生了损失 思考 如何解决 要两种方法 课堂练习 小刘同学去买圆珠笔他买了一支1元的又买了一支6元的问两支笔的平均价格是多少 includevoidmain floata a 1 6 2 0 printf f n a includevoidmain floata floatb c b 1 c 6 a b c 2 printf f n a includevoidmain floata a 1 6 2 printf f n a includevoidmain floata intb c b 1 c 6 a b c 2 printf f n a 2 4字符型数据的运算 逐个输出英文字母C H I N A 然后按反序输出 即A N I H C 可以把5个字母分别放在5个变量中 第1次按正序输出这5个字母 第2次按反序输出这5个字母 C语言提供字符型变量 用来存放字符数据 例题2 4 解题思路 2 4 1字符数据运算的简单例子 2 4字符型数据的运算 includevoidmain chara C b H c I d N e A a b c d e定义为字符变量 printf c c c c c n a b c d e 顺序输出CHINA printf c c c c c n e d c b a 反序输出CHINA 编写程序 说明 1 第3行是定义字符变量a b c d e 字符要用单撇号括起来 一个字符变量放一个字母字符 2 第4 5行输出5个字母 输出字符所用的格式说明为 c 3 运行结果 CHINAANIHC 2 4字符型数据的运算 includevoidmain chara C b H c I d N e A a b c d e定义为字符变量 printf c c c c c n a b c d e 顺序输出CHINA printf c c c c c n e d c b a 反序输出CHINA 编写程序 说明 1 第3行是定义字符变量a b c d e 字符要用单撇号括起来 一个字符变量放一个字母字符 2 第4 5行输出5个字母 输出字符所用的格式说明为 c 3 运行结果 CHINAANIHC 2 4字符型数据的运算 2 4 2字符常量和字符变量字符常量 1 用单引号包含的一个字符是字符型常量 2 只能包含一个字符 例 a A 1 abc a includevoidmain chara b a 2 b 3 printf c n a b 2 4字符型数据的运算 有些以 开头的特殊字符称为转义字符对于不可显示的字符 只能用转移字符来表示 例如 n换行 t横向跳格 r回车 反斜杠 dddddd表示1到3位八进制数字 xhhhh表示1到2位十六进制数字 用八进制或者十六进制都可以 但是不可以使用十进制 这里的数字值 就是字符的ASCII码值 不论是可显示字符还是不可显示字符 都可以使用这种数字形式来表示 1 3C 的基本数据类型与存储形式 常用转移字符列表 includevoidmain printf x07operating tsystem n printf 101 tA 012 ASCII码转义字符格式 dddd 0 7 ddd是八进制 xhhh 0 f hh是十六进制 符合以上格式的 即使出现 0也不代表是空字符 不符合的 出现了 0就是空字符了 1 3C 的基本数据类型与存储形式 includevoidmain printf x07operating tsystem n printf 101 tA 012 响铃 等价于 a 十六进制 写x07而不写0 x07 因为 0表示空字符 includevoidmain printf x07operating tsystem n printf 101 tA 012 includevoidmain printf x07operating tsystem n printf 101 tA 012 includevoidmain printf x07operating tsystem n printf 101 tA 012 字符 A 的ASCII码 八进制 与 A 等价 回车与换行是有区别的 includevoidmain printf x07operating tsystem n printf 101 tA 012 回车与换行是有区别的 includevoidmain printf x07operating tsystem n printf 101 tA 012 回车与换行是有区别的 includevoidmain printf x07operating tsystem r printf 101 tA 012 回车与换行是有区别的 字符串与多字符拼接是一样的效果 如果把程序中的 012也改为 r会怎么样 includevoidmain printf 101 tA 012 字符串与多字符拼接是一样的效果 includevoidmain chara 101 b t c A d 012 printf c c c c a b c d includevoidmain printf aaa b n printf aaa bbb n includevoidmain chara printf c n a 2 4字符型数据的运算 2 字符变量字符型变量用来存放字符常量 注意只能放一个字符 字符变量的定义形式如下 charc1 c2 在本函数中可以用下面语句对c1 c2赋值 c1 a c2 b 一个字符变量在内存中占一个字节 2 4字符型数据的运算 3 字符数据与整型数据在一定条件下可以通用一个字符常量存放到一个字符变量中 实际上并不是把该字符的字型放到内存中去 而是将该字符的相应的ASCII代码放到存储单元中 这样使字符型数据和整型数据之间可以通用 注意 一个字符数据既可以以字符形式输出 也可以以整数形式输出 例2 5向字符变量赋以整数 说明 在第 和第4行中 将整数97和98分别赋给c1和c2 它的作用相当于以下两个赋值语句 c1 c2 因为 a 和 b 的ASCII码为97和98 运行结果 9798 includevoidmain charc1 c2 c1 97 c2 98 printf c c n c1 c2 printf d d n c1 c2 例2 6大小写字母的转换 说明 程序的作用是将两个小写字母a和b转换成大写字母A和B 从 代码表中可以看到每一个小写字母比它相应的大写字母的ASCII码大32 语言允许字符数据与整数直接进行算术运算 运行结果 includevoidmain charc1 c2 c1 a c2 b c1 c1 32 c2 c2 32 printf c c c1 c2 2 4字符型数据的运算 字符型和整型有什么区别和联系 字符型只占1个字节 整型占4个字节 所以字符型变量中不能放很大的整数 字符变量是用来存放字符的 允许它进行整数运算只是为了处理起来方便 字符型可以使用 c作为字符输出 也可以使用 d作为整数输出 这不矛盾 字符 a 和整数97在内存中本来就是一样的 只是在输出的时候由不同的格式说明符 例如 c和 d 决定其输出的形式而已 输出形式灵活并不会影响到其真实值 2 4字符型数据的运算 2 4 3字符串常量字符串常量是一对双撇号括起来的字符序列 合法的字符串常量 Howdoyoudo CHINA a 123 45 可以输出一个字符串 如printf Howdoyoudo 2 4字符型数据的运算 是字符常量 是字符串常量 二者不同 如 假设 被指定为字符变量 charc c a a c CHINA 结论 不能把一个字符串常量赋给一个字符变量 规定 在每一个字符串常量的结尾加一个 字符串结束标志 以便系统据此判断字符串是否结束 规定以字符 作为字符串结束标志 如 如果有一个字符串常量 实际上在内存中是 它占内存单元不是 个字符 而是 个字符 最后一个字符为 但在输出时不输出 2 4字符型数据的运算 includevoidmain printf 0aaa bbb n 2 5符号常量 2 5 1为什么要用符号常量 例题2 7 已知圆的半径为r 求圆周长c 圆面积s 圆球体积v 解题思路 套用公式就可以计算 2 5符号常量 includevoidmain doubler 3 67 c s v c 2 3 1415926 r s 3 1415926 r r v 4 3 3 1415926 r r r printf c f ns f nv f n c s v 编写程序 说明 运行结果 c 23 059290s 42 313797v 155 291633 程序是否有错误 2 5符号常量 说明 1 C语言规定 两个整型数据相除结果是整型 因此 4 3的值是整数1 而没有小数部分 可以改用实数 写成4 0 3 0 程序第6行改为v 4 0 3 0 3 1415926 r r r 再编译和运行 得到正确的v值 2 可调用pow函数 求r 其函数形式是pow r 3 函数值是double型 3 程序中多次出现常数3 1415926 降低程序的可读性 可用一个符号来代表一个常量 如可以用一个符号名PI来代表圆周率3 1415926 这样就不必在每处都重复写3 1415926 而用PI来代表 这个PI就叫符号常量 definePI3 1415926 2 5符号常量 2 5 2符号常量的性质和使用方法 define不是C语句 该行的末尾没有分号 它是一个 预编译命令 不要把符号常量与变量混淆 符号常量只是一个符号 不占存储单元 它只是简单地进行字符置换 如把字符PI置换为字符3 1415926 不论置换的字符是否有含义都进行置换 习惯上 符号常量名用大写 变量名用小写 以示区别 使用符号常量的好处 含义清楚在需要改变一个常量时能做到 一改全改 include definePavoidmain inta 100 printf d n P include definePprintf d n a voidmain inta 100 Pprintf d n a 符号常量多用于对经常出现的内容的替代 例如PI使用符号常量的主要目的是提高可读性和可维护性 使程序更清晰 所以其含义一定要清楚上页的两个例子是为了让同学们更好的理解符号常量 其实二者的含义并不清楚 没有实用价值 include include definePI3 1415926voidmain doubler c s v scanf lf 2 6算术运算符和算术表达式 2 6 1算术运算符 1 基本的算术运算符 加法运算符 或正值运算符 如 减法运算符 或负值运算符 如 乘法运算符 如 除法运算符 如 模运算符 或称求余运算符 两侧均应为整型数据 如 的值为 课堂练习 提示用户输入一个任意大小的正整数 输出该数的十位数字 includevoidmain inta 123 a a 10 a a 10 printf d a 2 6算术运算符和算术表达式 2 运算符的优先级与结合性 语言规定了运算符的优先级在表达式求值时 先按运算符的优先级别高低次序执行 例如先乘除后加减 规定了各种运算符的结合方向 结合性 算术运算符的结合方向为 自左至右 即先左后右 2 6算术运算符和算术表达式 3 自增 自减运算符作用是使变量的值增 或减 如 使用 之前先使 的值加 减 使用 之后再使 的值加 减 2 6算术运算符和算术表达式 i 与 i的区别 是先执行 后 再使用 的值 是先使用 的值后 再执行 例如 i 3 i的值先变成4 再赋给 j的值也变为 先将i的值3赋给 的值为 然后 变为 2 6算术运算符和算术表达式 注意 自增运算符 自减运算符 只能用于变量 而不能用于常量或表达式 自增 减 运算符常用于循环语句中使循环变量自动加 也用于指针变量 使指针指向下一个地址 2 6算术运算符和算术表达式 2 6 1算术表达式用算术运算符和括号将运算对象 也称操作数 连接起来的 符合 语法规则的式子 称为 算术表达式 运算对象包括常量 变量 函数等 例如 5 a 是一个合法的表达式 2 6算术运算符和算术表达式 强制类型转换运算符 强制类型转换运算符的作用是 将一个表达式转换成所需类型一般形式 类型名 表达式 例如 double 将 转换成double类型 int x y 将x y的值转换成整型 float 5 3 将5 3的值转换成float型 例2 8强制类型转换 说明 有两种类型转换 一种是在运算时不必用户指定 系统自动进行的类型转换 如3 6 5 第二种是强制类型转换 当自动类型转换不能实现目的时 可以用强制类型转换 本例二者均可 运行结果 x 3 600000 i 3 includevoidmain floatx inti x 3 6 i int x printf x f i d n x i 强制类型转化用很广泛的应用 例如 includevoidmain floata intb c b 1 c 6 a b c 2 printf f n a includevoidmain floata intb c b 1 c 6 a float b c 2 printf f n a includevoidmain floata intb c b 1 c 6 a b c float 2 printf f n a 2 6算术运算符和算术表达式 各类数值型数据间的混合运算 混合运算 整型 包括int short long 浮点型 包括float double 可以混合运算 在进行运算时 不同类型的数据要先转换成同一类型 然后进行运算 说明 这种类型转换是由系统自动进行的 是由低向高的 例如 字符和整数运算专成整数 整数和浮点数运算转成浮点数 includevoidmain floata 1 5 intb 1 printf d n b int a includevoidmain floata 1 5 intb 1 printf f n b a 2 6算术运算符和算术表达式 有关表达式使用中的问题说明 ANSIC并没有具体规定表达式中的子表达式的求值顺序 允许各编译系统自己安排 例如 对表达式a f1 f2 并不是所有的编译系统都先调用f1 然后调用f2 在有的情况下结果可能不同 有时会出现一些令人容易搞混的问题 因此务必要小心谨慎 另外 i i i 也不能这样使用 因为在一个式子中三次对i赋值 不同的编译系统有不同的处理 所以哪次先赋值哪次后赋值是不确定的最安全的做法 一个表达式中 对一个变量 只做一次赋值 2 6算术运算符和算术表达式 语言中有的运算符为一个字符 有的运算符由两个字符组成 为避免误解 最好采取大家都能理解的写法 例如 不要写成i j的形式 而应写成 i j的形式 2 6算术运算符和算术表达式 在调用函数时 实参数的求值顺序 标准并无统一规定 例如 的初值为 如果有下面的函数调用 printf d d i i 在有的系统中 从左至右求值 输出 在多数系统中对函数参数的求值顺序是自右而左 printf函数输出的是 以上这种写法不宜提倡 最好改写成 2 7C运算符和C表达式 2 7 1 运算符 的运算符有以下几类 1 算术运算符 2 关系运算符 5 赋值运算符 及其扩展赋值运算符 6 条件运算符 7 逗号运算符 2 7C运算符和C表达式 8 指针运算符 和 9 求字节数运算符 10 强制类型转换运算符 类型 11 分量运算符 12 下标运算符 13 其他 如函数调用运算符 2 7C运算符和C表达式 2 7 2 表达式C语言有以下几类表达式 算术表达式 如2 6 7 3 5 sin 0 5 关系表达式 如x 0 y0 y 0 表示x 0与y 0同时成立 是逻辑运算符 代表 与 赋值表达式 如a 5 6逗号表达式 如a 3 y 4 z 8用逗号连接若干个表达式 顺序执行这些表达式 整个逗号表达式的值是最后一个表达式的值 今为8 includevoidmain inta intb b a 3 a a 3 a 3 printf d n d n a b 2 8提高部分 计算机不论对正数和负数都按 补码 形式存放到存储单元 对于正数来说 补码就是该数的 原码 该数的二进制形式 负数的补码不是它的原码 2 8 1求补码的方法 2 8提高部分 求一个负数的补码的方法是 取该数 不考虑数的符号 的二进制形式 它就是原码 对该原码逐位 取反 逐位把0变1 把1变0 得到其 反码 将得到的反码加1 2 8 1求补码的方法 求 10的补码步骤如下 1 10的原码是00001010 2 其反码是11110101 3 再加1得补码11110110 注意 负数的补码形式的最高位都是1 从第1位就可以判断该数的正负 2 8提高部分 2 8 2整型常量的表示形式十进制整数 如 123 456 4 八进制整数 以0头的数是八进制数 如 0123表示八进制数123 等于十进制数83 011表示八进制数 11 即十进制数 9 十六进制整数 以0 x开头的数是16进制数 如 0 x123 代表16进制数123 等于十进制数291 0 x12等于十进制数 18 2 8提高部分 2 8 3整型变量的类型 整型变量的分类 共六种 有符号基本整型有符号短整型有符号长整型无符号基本整型无符号短整型无符号长整型 signed int signed short int signed long int unsignedintunsignedshort int unsignedlong int 注意 括号表示其中的内容是可选的 VC中 基本整型和长整型都是4字节了 短整形还是2字节 2 8提高部分 整数类型的有关数据 类型类型说明符长度数的范围基本型int2字节 32768 32767短整型short2字节 215 215 1长整型long4字节 231 231 1无符号整型unsigned2字节0 65535无符号短整型unsignedshort2字节0 65535无符号长整型unsignedlong4字节0 232 1 includevoidmain inta 1 shortb 2 unsignedlongc 3 printf d n d n d n a b c includevoidmain unsignedshorti 32888 printf d i 删掉unsigned会怎样 2 8提高部分 例如 整数13在内存中实际存放的情况 2 8提高部分 整型变量的定义 规定在程序中所有用到的变量都必须在程序中定义例如 inta b 指定变量 为整型 unsignedshortc d 指定变量 为无符号短整型 longe f 指定变量 为长整型 2 8提高部分 2 8 4整型常量的类型 常量是有类型的 在赋值时匹配 按下面的规则处理 1 如果整常数的值在 32768 32767范围内 认为它是int型 分配2个字节 2 如果其值超过了上述范围 而在 2147483648 2147483647范围内 则认为它是长整型 分配4个字节 3 在一个整常量后面加一个字母l或L 则认为是longint型常量 4 一个整常量后面加一个字母u或U 认为是unsignedint型 类似于单精度浮点常数要加f 如3 52f 例如 includevoidmain inta intb b a 3 a a 3u a 3l printf d n d n a b 3和3u以及3l 三者值一样 只是内存大小和存储方式可能有所区别 vc中区别不大了 用得非常少 但要能认识 2 8提高部分 2 8 5运算符的优先级与结合性 语言规定 运算符的优先级和结合性 在表达式求值时 按运算符的优先级别高低次序执行 语言还规定 各种运算符的结合方向 结合性 算术运算符的结合方向为 自左至右 在C语言中有些运算符的结合方向是 自左至右 如赋值语句 includevoidmain inta 1 intb 2 intc 3 a b c 100 printf d n d n d n a b c
展开阅读全文
相关资源
相关搜索

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


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

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


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