获得不同的结果与
问题描述:
我已经定义到预处理指令相同数目:在一个方法中获得不同的结果与
#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.那么,为什么我得到3200.00000当100乘以PTM_RATIO时为0,但乘以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;
你假设宏将住码计算之前评估实际的代码如下评价。
好的答案,我只是写了类似的东西:-) – trumpetlicks 2013-03-25 20:00:37
嗯。这是一个非常好的帮助。谢谢。 – 2013-03-25 20:05:42