C.08关系表达式 与 分支结构

问题 a>b>c 表示 “b在 a和c 之间?”
不是的
关系运算符 是左结合 从左 向右 进行运算
假设 a =3; b=2; c=1;
(a>b)>1
1>1;
0
运算符优先级
逻辑非>算数运算符>关系运算符>逻辑与>逻辑或
逻辑非 (一元运算符 从右向左结合)
逻辑与 和逻辑或 都是 左结合
表示" b在a和c之间的 "?
a>b && b>c;
判断ch是大写英文字母
 ch>='A' && ch<='Z'
判断ch是数字字符
ch >='0' && ch <='9'

仅当 逻辑与(&&)表达式 左为真的时候 才会去右面执行

 

if(表达式 p)
语句 A
表达式p :不局限于 关系 表达式也可为 数值表达式,表达式的值非0时,为真
条件语句
if形式 :单分支选择控制结构
if..else..:双分支选着控制结构
else...if...:多分支选着控制结构

switch(mark){
case 常量1:
case 常量2:
..
default:
}
当Mark的值 没有 与case相匹配时 执行default 的语句


在赋值操作中 左侧与 右侧类型不一致时 会发生自动类型转换
自动类型转换的规则?
  变量 =表达式
将表达式类型 转换为  变量类型
当取值范围 大 的类型 -》取值范围较 小 的类型 通常是不安全的  会发生数值溢出

有符号整数与 无符号整数 主要区别?
怎样解释最高位 对于无符号整数最高位数据位 而对于有符号整数最高位为符号位
如果符号位 为0 表示这个数是整数 如果符号位 为1 表示这个整数位 负数

上溢出?
一个数值运算结果 绝对值 》类型表示的最大数 绝对值
1.进位超过了最高位而发生进位丢失;
2.或进位到的最高位而改变符号位

 
 

%hu ,输出无符号短整型
无符号整型数据 做减法运算时也会发生溢出
对于无符号数 ,不能随意用 a-b<0 取代 a<b
下溢出
浮点数(既可能发生 上溢出 也可能 发生 下溢出)
浮点数运算 结果 绝对值 < 类型能表示的最小数 绝对值

此时,系统将运算结果处理 成机器0
整形表数范围是连续的 而对于浮点数 来说 严格意义上 表数范围并不是 连续的
因为浮点数 在内存中是以阶码 与位数的形式存储的 阶码决定了表数范围 位数决定精度。阶码的存储范围是有限的.

从高精度 到 低精度 转换时 会损失什么信息?
低精度的数据 位比高精度 的少 容纳不下高精度的 所有信息。

标准c 未规定3中浮点 类型的长度 ,精度和表数范围
由于浮点数在内存中 占 总的字节数是有限的  使用更多的 位数存储阶码,扩大了变量的值域(既表数范围)但精度降低
使用更多位存储尾数 ,增加了有效数字位数 提高了数值精度,但表数范围缩小

为什么长整形信息数据不能用 float型数据精确保存 ?
由于浮点类型的数据 在内存中是以阶码与 位数存储,而尾数所占得位数表示浮点数的精度, 虽然长整型与单精度在内存占4个字节得存储单元,但单精度实型的四个字节并未全部用来存储他的尾数,其中有部分位存储阶码,因此单精度实型的尾数在内存中所占位数,小于长整型在内存中所占的位数, 故长整型赋值给 单精度实型会损失精度

为什么浮点数 的输出结果也是不准确的?
因为双精度实型能够精确表示 得只有16位 故16 位以后的数据是不准确的。
有效数字:从左边第一个非0 数字起到 精确的位数为止 其间所有数字

float :23位尾数 6-7
double :52位尾数 16

二进制 小数 与十进制 小数并不是 一一对应关系
二进制小数 能转化 十进制小数 (二进制小数对应 十进制小数是 离散的 出现多个近似相等的十进制 小数用同一个 二进制小数 表示)
浮点数并非真正意义上的实数,只是其在某种范围近似,受精度限制不能直接比较相等,只能比较它们近似相等
但十进制小数并不一定 转化为 二进制小数
(并不是每一个十进制小数 都唯一对应一个 二进制小数
但每一个二进制小数 都唯一对应一个十进制小数)

精度问题决定了 浮点型无法取代整型

两个数量级相差 很大的浮点数做加减 运算时,数值小的数会受浮点数精度限制 而被忽略 (体现单精度实型 只能保证7位有效 数字 7位以后的数字都是不准确的)
故将一个 很大的数 与很小的数 直接做加减运算 应避免使用 单精度浮点类型

程序测试: 给定一组输入,通过运行被测试程序,检查程序输出是否与预期效果一致
测试用例选取方法:
1尽量覆盖所有分支(路径)
2考虑合法的输入数据,以及不合法的输入数据,以及各种边界条件

白盒测试 (结构测试)
:完全了解程序内部的逻辑 结构和处理过程,按照程序内部的逻辑测试程序,检验程序中的每条逻辑路径是否都能按预定要求正确工作。

主要用于 测试的早期和重要路径
黑盒测试:(功能测试)
:不考虑内部逻辑结构和处理过程,把系统看成一个黑盒子,只根据自根据需求规格说明书要求,设计测试用例,检查程序的功能,能否符合它的功能说明
主要用于: 测试的后期和重要功能。
测试时,一般将小集合 放在大集合 之前进行测试

解决问题的基本步骤是:
理解问题
制定计划
执行计划
回头看
算法:为解决一个具体问题 而采取的确定的有限的操作 步骤仅指计算机能执行的算法

算法 +数据结构 =程序
数据结构:定义待操作的数据在 计算机内存中是 如何存储和组织的,选着恰当的数据结构可以提高程序的运行和 或存储效率
算法 特性:有穷性 在合理时间内完成,
       确定性 无歧义,且能够得到正确结果
        允许没有输入或者有多个输入
        必须有一个或多个输出
RAPTOR是什么?
用于 有序推理的快速算法原型工具。
是一种基于 流程图仿真 的可视化的程序设计环境
最大限度的减少语法要求
帮助你编写正确的程序指令程序 -流程图
逐个执行图形符号
跟踪 指令流 执行过程
Raptor的流程图什么样?
一个有向图 必须有 start 和 end

表达式:是由操作数和 运算符组合而成
RAPTOR中 可用的函数:sqrt()开方,abs()求绝对值 log() 与数学相同
ceiling()向上取整  floor()向下取整   max(,)对两个数求最大值
min(,)对两个数求最小值     random给出随机数 ,pi给出 p的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值