深入理解计算机系统这本书中的一个问题。。。求大神

囧囧骚年 2016-01-18 09:42:33
int x;
x==(int)(float)x 这句逻辑语句是否一定正确?书上说x=Tmax时不成立?
...全文
260 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
囧囧骚年 2016-01-21
  • 打赏
  • 举报
回复
引用 2楼HeBanBei 的回复:
int x; x==(int)(float)x 先解释一下书上这么说到底是什么意思。 1、先把x从int转换为float类型 2、再从float类型转换为int类型 最后,问:两次转换之后的结果与原来的值是否一定相等? 解答:不一定相等。 原因是,第一次转换时,也就是从int转为float时,可能出现不相等的情况。 我们知道,int是4个字节表示一个整数,float是4个字节表示一个浮点数。 所以,int的精度比float高。 int的有效数字可以是10位,而float只有6,7位。 所以,你只要把x的取值先设定为10个有效数字,比如 2123456789,你就能很快得到验证。 但是,如果你代码里这么写,可能得不到想要的结果。 原因可能是编译器给你优化了。 有一个方法,你可以设一个中间变量 float类型,然后分两次转换。
恍然大悟,谢谢啦,
HeBanBei 2016-01-19
  • 打赏
  • 举报
回复
int x; x==(int)(float)x 先解释一下书上这么说到底是什么意思。 1、先把x从int转换为float类型 2、再从float类型转换为int类型 最后,问:两次转换之后的结果与原来的值是否一定相等? 解答:不一定相等。 原因是,第一次转换时,也就是从int转为float时,可能出现不相等的情况。 我们知道,int是4个字节表示一个整数,float是4个字节表示一个浮点数。 所以,int的精度比float高。 int的有效数字可以是10位,而float只有6,7位。 所以,你只要把x的取值先设定为10个有效数字,比如 2123456789,你就能很快得到验证。 但是,如果你代码里这么写,可能得不到想要的结果。 原因可能是编译器给你优化了。 有一个方法,你可以设一个中间变量 float类型,然后分两次转换。
赵4老师 2016-01-19
  • 打赏
  • 举报
回复
理解讨论之前请先学会如何观察! 计算机组成原理→DOS命令→汇编语言→C语言(不包括C++)、代码书写规范→数据结构、编译原理、操作系统→计算机网络、数据库原理、正则表达式→其它语言(包括C++)、架构…… 对学习编程者的忠告: 多用小脑和手,少用大脑、眼睛和嘴,会更快地学会编程! 眼过千遍不如手过一遍! 书看千行不如手敲一行! 手敲千行不如单步一行! 单步源代码千行不如单步Debug版对应汇编一行! 单步Debug版对应汇编千行不如单步Release版对应汇编一行! 不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建所有,然后在IDE中运行。(一般人我不告诉他!) VC调试时按Alt+8、Alt+7、Alt+6和Alt+5,打开汇编窗口、堆栈窗口、内存窗口和寄存器窗口看每句C对应的汇编、单步执行并观察相应堆栈、内存和寄存器变化,这样过一遍不就啥都明白了吗。 对VC来说,所谓‘调试时’就是编译连接通过以后,按F10或F11键单步执行一步以后的时候,或者在某行按F9设了断点后按F5执行停在该断点处的时候。 (Turbo C或Borland C用Turbo Debugger调试,Linux或Unix下用GDB调试时,看每句C对应的汇编并单步执行观察相应内存和寄存器变化。)
paschen 2016-01-18
  • 打赏
  • 举报
回复
确实当int取最大正值是不相等了,浮点数误差(int)(float)x 后变成了绝对值最大的负数
----《深入探索Android热修复技术原理》高清完整版PDF---- 2017年6月,阿里巴巴手淘技术团队推出了史上首个非侵入式移动热更新解决方案——Sophix。在Android热修复的三大领域:代码修复、资源修复、SO修复方面,以及方案的安全性和易用性方面,Sophix都做到了业界领先。 《深入探索Android热修复技术原理》从阿里Sophix方案开发过程入手权威解读,分享了阿里巴巴手淘技术团队对系统底层的原创性发现,是业界首部全方位完整介绍热修复原理的书籍。 阿里技术大牛联袂推荐 自 2014 年至今,手淘定义和引领了业界 Android 组件化和热修复技术风潮,至于后来者 Instant App 或多或少也受了国内技术风气影响。今天看到团队同学将这块技术认真系统化整理成书,非常欣喜。在这本书里,既能看到对热修复技术风潮的发展历史系统深入总结,看到国内程序员在Android系统级技术持续突破上的不懈努力,更看到国内程序员坚持打造世界级优秀专业移动技术产品的雄心壮志! 手机淘宝基础平台部负责人,阿里巴巴资深技术专家 吴天华(天施) 业内少有的讲解 Android 热修复的深度书籍,对于原理、代码讲解得非常的清晰和深入,值得 Android 工程师研读。 手机淘资深专家,倪生华(玄黎) 应用热修复是一项略带神秘而又颇具争议的技术,但是它的确赋予应用开发者“驾着飞机修引擎”的能力。本书从 Android 应用热修复技术的原理及代码实现、多种方案进行比较的角度,系统化地阐述了 Android 平台上的应用热修复技术。对 Android 应用热修复有好奇心的技术人员,这本专题书不容错过。 计算机技术领域著名作家,阿里巴巴飞猪事业部首席架构师 潘爱民

3,882

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 其它技术问题
社区管理员
  • 其它技术问题社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧