首页 > 其他 > 详细

华摄氏度和摄氏度的转换 华摄氏度转化摄氏度 使用带运算的宏定义

时间:2014-06-08 03:49:15      阅读:426      评论:0      收藏:0      [点我收藏+]

定义:

        摄氏度:CELSIUS EQUALS 

        华氏度:FAHENHEIT EQUALS


彼此间的转换很容易,如下:  

         将摄氏度转成华氏度:将摄度直接乘以9,除5,再加上32

         华氏度转成摄氏度:将华氏度减去32,乘以5再除以9


写成公式:

CelEquVal --摄氏度

FahEquVal-- 华氏度

摄氏度转成华氏度:

FahEquVal = CelEquVal  * 9 / 5 + 32;

华氏度转成摄氏度:

CelEquVal  =(FahEquVal - 32) * 5 / 9;


公式看起来简单吧,但一步小心就掉陷阱了,哈哈。具体再看:


FahEquVal  >= 32


摄氏度转成华氏度:

#define   CelToFah(CelEquVal) (unsigned char )(CelEquVal  * 9 / 5 + 32)

华氏度转成摄氏度:

#define  FahToCel(FahEquVal ) (unsigned char )((FahEquVal - 32) * 5 / 9)


看出问题了吗?伙伴们,这个问题有点隐蔽哦,再仔细瞧瞧。我的答案在底部,希望您能看出问题,然后就看看我的分析吧。嘻嘻。







这是我的分析了:


程序在运行 CelEquVal  * 9  或者 (FahEquVal - 32) * 5 后,有可能溢出,即超出255了,因此,结果就不是我们想要的,知道为什么了吧。修改后没有BUG的写法:

摄氏度转成华氏度:

#define CelToFah(CelEquVal )(unsigned int )(CelEquVal  * 9 / 5 + 32)

华氏度转成摄氏度:

#define  FahToCel(FahEquVal )(unsigned int)((FahEquVal - 32) * 5 / 9)




华摄氏度和摄氏度的转换 华摄氏度转化摄氏度 使用带运算的宏定义,布布扣,bubuko.com

华摄氏度和摄氏度的转换 华摄氏度转化摄氏度 使用带运算的宏定义

原文:http://blog.csdn.net/chuangwu2009/article/details/29218623

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!