Error: Expected a Statement / C++ / Visual Studio

Error: Expected a Statement / C++ / Visual Studio

本文关键字:C++ Studio Visual Statement Expected Error      更新时间:2023-10-16

当我计划制作一个小游戏来测试我自己对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;
};

在c++中需要用{}对语句进行分组,而不需要在函数后面加上;

您还在一些地方遗漏了=符号。我假设user是一个全局变量,但它确实应该被传入,但我把这个留给你。

我假设返回值是用户是否升级,所以这真的应该是bool,而不是int。我在if true块中添加了一条返回语句。这取决于lvup的用法,它可能有意义,也可能没有意义。如果不使用返回值,则不应该使用任何返回值,而应该使用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语句只有一行,你可以选择不使用大括号,但是如果有不止一行需要执行来响应条件,你需要包括它们。然而,不包含它们可能会使维护代码的人犯错误,并且在向块中添加一行时不添加它们,所以有些人说总是添加它们。

你需要一些括号{}。事实上,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

,如果if语句后面有else,则会生成编译错误,这就是您的情况: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循环旁边的唯一一行。