我在我的应用程序中注意到一件非常奇怪的事情。我的 World 类中有两个静态 const 整数:
class World
{
public:
static const int CHUNK_SIZE_X = 32;
private:
static const int SHIFT_X;
};
常量SHIFT_X在相应的 *.cpp 文件中初始化:
const int World::SHIFT_X = Ogre::Math::Log2(World::CHUNK_SIZE_X);
现在奇怪的是,SHIFT_X中的值是 4 而不是 5。如果我从任意方法中调用Ogre::Math::Log2(32) ,它会正确计算 5。
这到底是怎么回事?我还需要说,这只发生在 Windows 7(使用 Visual Studio Express 10)下。我的应用程序也在 GNU/Linux (Debian Squeeze) 下运行,一切正常。