#define
次の if ステートメントで使用すると、次のマクロが期待どおりに評価されない理由について混乱しています。
#define kOffsetX 2048.0
#define kPositionX (screenSize.width * (kOffsetX/2048.0))-10.0
CGSize screenSize = [CCDirector sharedDirector].winSize;
float potentialPosition = 486.86f;
float playersFieldOffset = 1.0;
if ((potentialPosition - kPositionX) * playersFieldOffset > 0.0) {
kPositionX は 470.0 に評価されることに注意してください。明らかに 486-470 が 0 より大きい場合、if ステートメントは FALSE と評価されます。ただし、kPositionX を括弧で囲むと、if ステートメントは適切に TRUE と評価されます。
なぜこうなった?これは a の不適切な使用方法#define
ですか? もしそうなら、私は何をすべきですか?