我有这个简单的代码,可以在华氏度和摄氏度之间转换。我定义了一些宏来执行此操作,但是使用它时却得到了一些奇怪的结果。当absoluteTemp
= 373.15(开尔文中水的沸点)时,我使用此方法。
#define kelvinToCelc(k) k - 273.15
#define celcToFahren(c) (9.0 / 5.0) * c + 32
double x = kelvinToCelc(absoluteTemp); // 100
double y = celcToFahren(x); // 212
double z = celcToFahren(kelvinToCelc(absoluteTemp)); // 430.52???
return celcToFaren(kelvinToCelc(absoluteTemp));
在扩展宏后
double z = celcToFahren(kelvinToCelc(absoluteTemp));
它成为了
double z = (9.0 / 5.0) * absoluteTemp - 273.15 + 32
您需要在宏中添加括号
#define kelvinToCelc(k) (k - 273.15)
#define celcToFahren(c) ((9.0 / 5.0) * c + 32)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句