码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2014-06-08 03:48:58      阅读:277      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!