表达式中的DEFINE()宏用法

所以我定义了..
#define RADIAN(x) x*3.14159265f/180.0f
然后像这样使用它:
RADIAN(theta-90)
我的程序不断给我不正确的结果,花了我几个小时才意识到上面的陈述和下面的陈述之间存在巨大差异。
RADIAN((theta-90))
现在我的程序运行正常。为什么第一个陈述不正确?
已邀请:
#define
只是文本替换,因此
RADIAN(theta-90)
实际上是
theta-90*3.14159265f/180.0f
,显然不是您的意思。尝试
#define RADIAN(x) ((x)*3.14159265f/180.0f)
代替。
宏的拉格利进行基于文本的替换,因此
RADIAN(theta-90) 
扩展为:
theta - 90* 3.14159265f/180.0f  
由于运算符优先级,其结果为:
theta - (90* 3.14159265f/180.0f)  
上面的答案都是正确的。但是,还没有提出一点。 这是C ++,而不是C。停止使用预处理程序宏。
这是因为,在第一种情况下,X将被(theta-90)替换,因此您的函数将计算为:
theta - 90* 3.14159265f/180.0f

要回复问题请先登录注册