说我有
#define A 23.9318; #define B 0.330043; #define C 5.220628;
字符串我想做
const unsigned result = (unsigned)(0x01000000 * ( A * B / C )); // unsigned is 32 bit
型我所希望的是得到浮点计算的固定小数表示的结果。我不能预先合并A,B,C在一起,因为他们的定义不是我的代码的一部分,我需要它的工作,如果他们被改变。
xjreopfe1#
不可以,标准的C预处理器操作不执行浮点运算。C标准允许但不要求C实现在编译时执行这些操作。
c6ubokkw2#
下面的例子说明了虽然不是必需的,但一些C实现确实包含了浮点数的编译时计算。下面的代码是使用C99实现编译的,并产生了指定的结果(注解值为main():
main()
#include <ansi_c.h> #define A 23.9318 #define B 0.330043 #define C 5.220628 #define result A*B/C //1.512945007267325 const unsigned resultB = (unsigned)result*(0x01000000); int main(void) { resultB; //24394701 return 0; }
字符串
2条答案
按热度按时间xjreopfe1#
不可以,标准的C预处理器操作不执行浮点运算。
C标准允许但不要求C实现在编译时执行这些操作。
c6ubokkw2#
下面的例子说明了虽然不是必需的,但一些C实现确实包含了浮点数的编译时计算。
下面的代码是使用C99实现编译的,并产生了指定的结果(注解值为
main()
:字符串