尽管不符合条件但仍要输入陈述

msm*_*f14 0 c++ if-statement

这是一个具体的问题,但我似乎无法弄清楚出了什么问题.

else if (X == 2)
        //move left
    {
        if (Level[X-1][Y] == 0);
        {

            cout << Level[X-1][Y] << "\n";
            cout << "\n MOVING LEFT from RIGHT\n";  //PROBLEM IS HERE

            Level[X][Y] = 1; // block it
            X = X - 1;
            moved = 1;
        }
    }
Run Code Online (Sandbox Code Playgroud)

我正在做的是我正在检查Level [X-1] [Y]是否为1,表示一列,所以我无法将我的播放器移动到那里.但是由于某种原因,尽管它是1而不是0(如输出所示),仍然可以访问IF语句.任何帮助将不胜感激.

Sha*_*our 10

你的问题在这里:

if (Level[X-1][Y] == 0);
                       ^
Run Code Online (Sandbox Code Playgroud)

;结束了,如果语句.接下来的,如果声明仅仅是一个复合语句是这样的:

{
  //Code
}
Run Code Online (Sandbox Code Playgroud)

并且它们本身完全有效并且具有许多用途,其中一个用途是创建块范围.

为了完整起见,如果我们转到草案C++标准部分 6.2 表达式语句,我们看到; 刚刚终止一个空语句.语法如下:

expression-statement:
  expressionopt ;
                ^                        
Run Code Online (Sandbox Code Playgroud)

它还说:

[...]带有表达式missing的表达式语句称为空语句.[...]


pad*_*ddy 6

分号!!!

   if (Level[X-1][Y] == 0);
Run Code Online (Sandbox Code Playgroud)

  • 你可以向OP解释分号是什么意思吗? (3认同)