我如何为整数添加最小值和最大值? 我希望整数永远不会变为负数,也永远不会超过100
以下是示例:
int hp = 100;
std::cout << "You cast healing magic to yourself!" << std::endl;
hp += 20;
mp -= 25;
例如,健康值为100,但当释放治疗魔法时,它变为了120。我想要的是,无论有多少治疗魔法被释放,它都保持为100。
std::clamp
:hp = std::clamp(hp + 20, 0, 100);
mp = std::clamp(mp - 25, 0, 100);
min
和 max
可以节省几条指令 :) - Ayxan Haqverdili如果您使用支持C++ 17的编译器,您可以像@TedLyngmo建议的那样使用std::clamp
。如果不支持,则可以编写一个简单的函数来管理hp
和mp
的限制:
void change(int& orig, int val)
{
int temp = orig + val;
if (temp <= 0)
temp = 0;
else if (temp >= 100)
temp = 100;
orig = temp;
}
int main()
{
int hp = 40, mp = 40;
std::cout << "You cast healing magic to yourself!" << std::endl;
change(hp, 50);
change(mp, -25);
std::cout << hp << " " << mp << std::endl;
}
我相信你想表达的是,无论治疗魔法是什么,你都希望以100或你当前的生命值来展示它。如果是这样,你可以将20和25存储为变量,并创建另一个具有与原始变量相同值的变量,并对其进行操作。不要改变原始变量的值,这样你就可以展示它。
std::clamp
。 - BoBTFishstd::min(hp + 20, 100)
就足够了。您应该事先检查法力值,并且如果角色不足,则不允许咒语成功。 - Sebastian