繁体   English   中英

使用相同的数字获得不​​同的结果

[英]Getting different result with the same number

我已经定义了预处理器指令:

#define PTM_RATIO 32
#define PTM_RATIO_2 isIPad?64:32

然后在一个方法中我使用上面的指令,如下所示:

NSLog(@"PTM_RATIO %d",PTM_RATIO);
NSLog(@"PTM_RATIO_2 %d",PTM_RATIO_2);

float32 test=100*PTM_RATIO;
float32 test2=100*PTM_RATIO_2;

NSLog(@"Test %f",test);
NSLog(@"Test2 %f",test2);

这是上面代码的输出:

2013-03-25 23:43:57.011 Box2d[3625:15203] PTM_RATIO 32
2013-03-25 23:43:57.019 Box2d[3625:15203] PTM_RATIO_2 32
2013-03-25 23:43:57.020 Box2d[3625:15203] Test 3200.000000
2013-03-25 23:43:57.021 Box2d[3625:15203] Test2 32.000000

如您所见,PTM_RATIO和PTM_RATIO_2都是32.那么为什么当100乘以PTM_RATIO时我得到3200.000000,而当它乘以PTM_RATIO_2时为32.000000?

预处理器宏主要是文本替换。 更改:

#define PTM_RATIO_2 isIPad?64:32

至:

#define PTM_RATIO_2 (isIPad?64:32)

没有它,你的源代码:

100*PTM_RATIO_2

扩展到:

100*isIPad?64:32

然后将其解析为:

(100*isIPAD) ? 64 : 32

PTM_RATIO_2在实际代码中按如下方式评估

float32 test2 = (100*isIPad)?64:32;

您假设MACRO将在实时代码计算之前进行评估。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM