我在一个文件中有这个宏定义(我们称之为file1.c):
#define VAL_NOT_SET -9999.9
在另一个文件中,我包含file1,然后将另一个变量初始化为VAL_NOT_SET
:
decimal value;
value = VAL_NOT_SET;
稍后,我尝试比较两个值:
if(value == VAL_NOT_SET){
...
}
但if语句失败了。当我打印出value
和VAL_NOT_SET
的内容时,我得到:
value == -9999.900000
VAL_NOT_SET == 759.867067
但是,如果我将我的宏设置为-9999
,而不是-9999.9
,则没有问题,VAL_NOT_SET
会保留其值。
此外,这是我试图从AIX机器转换到Linux的代码,并且在AIX上没有任何问题。有没有人知道为什么宏会失去它的价值,但只有当它是float
?