由于我打算用一个小游戏来测试我自己迄今为止在C ++中所知道的内容,我发现使用它会在“else”的位置给我一个错误。 有人可以帮忙吗?
int lvlup()
{
if (user.xp >= user.maxxp)
user.xp = 0;
user.maxxp + 10;
user.maxhealth += user.maxhealth * .5;
user.defense + 2;
user.attack + 3;
user.lvl + 1;
else
return 0;
};
答案 0 :(得分:1)
您需要在c ++中使用{}
对语句进行分组,并且在该函数之后不需要;
。
你也错过了几个地方的=号。我假设用户是全球性的,但它确实应该被传递,但我会把它留给你。
我假设返回值是用户是否升级,所以真的应该是bool
,而不是int
。我已经向if
true块添加了一个return语句。取决于lvlup的使用,可能有意义也可能没有意义。如果未使用返回值,则您不应使用void
。
所以你的代码应该是:
int lvlup()
{
if (user.xp >= user.maxxp)
{
user.xp = 0;
user.maxxp += 10;
user.maxhealth += user.maxhealth * .5;
user.defense += 2;
user.attack += 3;
user.lvl += 1;
return 1;
}
else
return 0;
}
如果您的if/else
语句只有一行,您可以选择不带任何大括号,但如果要响应条件执行多行,则需要包含它们。但是不包括它们可以为维护代码的人打开错误的可能性而不是在向块添加行时将它们放入,所以有些人说总是添加它们。
答案 1 :(得分:0)
你需要一些方括号{}。 事实上,如果在代码段周围没有找到括号,if早午餐和for循环只执行下一行。 例如:
a = 1;
if (a == 0)
std::cout << "This line is skipped" << endl;
std::cout << "This line will appear" << endl;
如果执行此代码,输出将为:
This line will appear
如果else跟在if语句后面,则会生成编译错误,这是您的情况:p
如果你写下一些括号来构建你的代码,如下所示:
a = 0;
if (a == 0) {
std::cout << "This line is not skipped" << endl;
std::cout << "This line will appear too" << endl;
}
输出将是:
This line is not skipped
This line will appear too
如果没有找到括号,for循环将只循环for循环旁边的唯一一行。