C ++宏:优先顺序不同?

迈克尔·斯诺登

我有这个简单的代码,可以在华氏度和摄氏度之间转换。我定义了一些宏来执行此操作,但是使用它时却得到了一些奇怪的结果。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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

C宏扩展顺序

来自分类Dev

C宏扩展顺序

来自分类Dev

C / C ++中的优先顺序

来自分类Dev

if语句C ++中的优先顺序

来自分类Dev

C中函数执行的优先顺序

来自分类Dev

无法解析C中的宏优先级?

来自分类Dev

C ++和OpenGL矩阵顺序之间的混淆(行优先与列优先)

来自分类Dev

如何编写Rust宏以将行优先顺序转换为列优先顺序?

来自分类Dev

c ++不同自由顺序的双重自由错误

来自分类Dev

C ++断言:断言宏中表达式的优先级

来自分类Dev

C宏使用文字vs变量产生不同的结果

来自分类Dev

C#版本8 ..运算符的优先顺序是什么?

来自分类Dev

按顺序返回不同的优先级排序结果

来自分类Dev

C ++实现具有不同优先级功能的优先级队列的最佳方法是什么?

来自分类Dev

C# 调用具有顺序命名的不同列表

来自分类Dev

C / C ++宏扩展

来自分类Dev

C ++可变参数模板:gcc和nvcc / intel中的不同优先级

来自分类Dev

如何编写带有不同数量的信息参数的c ++断言宏?

来自分类Dev

C-使用宏使用不同结构类型参数重载方法

来自分类Dev

2个类似的C程序,它们的宏产生不同的输出

来自分类Dev

C宏-避免宏扩展

来自分类Dev

C中的宏内的宏

来自分类Dev

C宏-避免宏扩展

来自分类Dev

深度优先搜索(C ++)

来自分类Dev

SFINAE模板的优先顺序?

来自分类Dev

Android MultiSelectListPreference的优先顺序

来自分类Dev

CSS优先顺序

来自分类Dev

CSS规则的优先顺序

来自分类Dev

Java优先顺序