从float C ++中删除与int32_t转换相关的警告消息

时间:2012-11-23 03:51:25

标签: c++ compilation

我已经掌握了一些C ++游戏资源,我对C ++很陌生并且我已成功编译了源代码并且看起来工作正常,但是有一些恼人的警告我无法解决。

我的C ++编程技巧非常基础,我对这些模板变量的东西有很大的问题。特别是这个名为int32_t的模块化模板,它似乎在我的源代码中几乎无处不在。

我在int32_t上阅读的文档并不是非常友好的noob友好,它们非常正式,对于那些不知道如何使用它的人来说真的很难理解。 (嗯,我觉得我可能真的在看错了地方)。

重点:

以下是我遇到问题的功能:

int32_t Weapons::getMaxMeleeWeaponDamage(int32_t attackSkill, int32_t attackValue, float attackFactor)
{
    return ((int32_t)std::ceil(((attackValue * 0.05) * attackSkill) + (attackValue)) / attackFactor);
}

警告:

170 C:\ compiling \ GameSources \ weapons.cpp [警告]转换为int32_t' from float'

线索是,我确实希望它计算浮动,并返回一个int值。 (因此损伤计算是准确的,但游戏客户端上的损坏显示会返回损坏的整数表示。)

据我所知,这个警告只是告诉我我想听到什么。但是我怎么能摆脱这个警告呢? (除了告诉我的编译器忽略警告,我不想要那个)。

1 个答案:

答案 0 :(得分:2)

您正在将ceil的返回值转换为int。然后用浮点数除以该结果。你现在拥有的,你返回的价值,是一个浮动。然后编译必须将其转换为int。这是编译器抱怨的后一种转换。

我会说你放错了类型。

作为一个样式问题,我建议您使用C ++强制转换而不是旧的C风格强制转换。