如何解决表达式中的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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。