消除与浮点C+的int32_t转换相关的警告消息+; 我已经掌握了一些C++游戏资源,我对C++很陌生,我已经成功编译了这些源码,而且看起来很好,但是有一些恼人的警告我无法解决。 我的C++编程技巧非常基础,这些模板变量TyGyS有很大的问题。尤其是这个名为int32_t的模块化模板,在我的源代码中几乎到处都使用它
我在int32上读到的文档并不十分友好,它们非常正式,对于那些不知道如何使用它的人来说很难理解。(嗯,我觉得我可能看错地方了) 切中要害: 以下是我遇到问题的函数:消除与浮点C+的int32_t转换相关的警告消息+; 我已经掌握了一些C++游戏资源,我对C++很陌生,我已经成功编译了这些源码,而且看起来很好,但是有一些恼人的警告我无法解决。 我的C++编程技巧非常基础,这些模板变量TyGyS有很大的问题。尤其是这个名为int32_t的模块化模板,在我的源代码中几乎到处都使用它,c++,compilation,C++,Compilation,我在int32上读到的文档并不十分友好,它们非常正式,对于那些不知道如何使用它的人来说很难理解。(嗯,我觉得我可能看错地方了) 切中要害: 以下是我遇到问题的函数: int32_t Weapons::getMaxMeleeWeaponDamage(int32_t attackSkill, int32_t attackValue, float attackFactor) { return ((int32_t)std::ceil(((attackValue * 0.05) * attackS
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\wearms.cpp[警告]从float'转换为int32\t'
线索是,我确实希望它在计算时考虑float,并返回一个int值。
(因此伤害计算是准确的,但游戏客户端上显示的伤害会返回伤害的整数表示)
就我所知,这个警告只是告诉我我想听的。但是我怎样才能摆脱这个警告呢?(除了告诉我的编译器忽略警告之外,我不希望这样) 您正在将ceil的返回值转换为int。然后将该结果除以浮点。现在,返回的值是一个浮点数。然后,编译器必须将其转换为int。这是编译器抱怨的后一种转换
我想说你把铅字铸造放错地方了
作为风格问题,我建议你使用C++的铸造而不是旧的C型铸造。
警告只让你知道你可能做了错事,如果你知道你做的一切正确,那么你可以沉默警告。类似的讨论如下: