本当に奇妙なことが起こっています: foo(100*1.0f) を呼び出すと、行のどこかで 0 になります。確認するために、foo() にブレークポイントを設定しましたが、実際にはゼロであり、実際に 100*1.0 で呼び出されます。 f. コードは Obj-C++ です。
ご覧のとおり、score*scoreMultiplier は 100 です。 呼び出し関数 http://img341.imageshack.us/img341/1109/screenshot20100502at135.png
void JNPP1PGameController::addScoreToPlayer(NSInteger score) {
if(!gameOver){
JNLogString(@"Adding score(%d*%f) to player", score, scoreMultiplier);
[player addScore: score*scoreMultiplier];
[wrapper setShouldNotify];
[wrapper notify];
} else {
JNLogString(@"Not adding score(%d*%f) because GAME IS OVAR", score, scoreMultiplier);
}
}
そして、これが XCode の GDB フロントエンドで呼び出された関数です。ここで _score は 0 です。
- (void) addScore:(NSInteger) _score {
score += _score;
JNLogString(@"Player can has %d points.. HURRAY!!!", score);
}