bool值在目标C中没有变化

时间:2011-10-09 15:53:27

标签: objective-c ios4

我有以下代码:

bool hasGoneDown = TRUE;

NSLog(@"%d", hasGoneDown);
    if(y > 700 && hasGoneDown == TRUE){
        [_game addToScore:600];

        hasGoneDown = FALSE;
    }

    if(y < 700){
        NSLog(@"we are IN : %d", hasGoneDown);
        hasGoneDown = TRUE;
    }

但由于某种原因,即使在if语句中设置条件,bool值也不会发生变化,它始终为1!

所以我做错了什么?

更多信息

这里有关于在那里做什么的更多信息。 这是一个游戏,技术上有一个角色跳跃,y var表示y轴,所以当角色跳跃高于700时,它应该做某些事情...上面的代码被不断调用超出游戏,但是bool的价值并没有全部改变!

2 个答案:

答案 0 :(得分:2)

bool hasGoneDown = TRUE;

NSLog(@"%d", hasGoneDown);
    if(y > 700 && hasGoneDown == TRUE){
        [_game addToScore:600];

        hasGoneDown = FALSE;
    }

    if(y < 700){
        NSLog(@"we are IN : %d", hasGoneDown);
        hasGoneDown = TRUE;
    }

如果整个代码都在一个函数中,那么每当函数运行时将它初始化为true都将是真的。我希望bool hasGoneDown = True在其他地方被声明为全局变量。你的代码..我相信你的代码更加“整洁”的版本如下:

if(y >= 700 && hasGoneDown == TRUE)
{
    [_game addToScore:600];

     hasGoneDown = FALSE;
}

else{
      NSLog(@"we are IN : %d", hasGoneDown);
      hasGoneDown = TRUE;
    }

答案 1 :(得分:0)

首先,请勿使用“TRUE”和“FALSE”。使用“是”和“否”。其次,您的逻辑可能有问题。您可能希望使用单个“if / else”语句而不是两个“if”语句。你必须自己评估一下。

if(y > 700 && hasGoneDown == YES){
    [_game addToScore:600];

    hasGoneDown = NO;
}

if (y < 700){
    NSLog(@"we are IN : %d", hasGoneDown);
    hasGoneDown = NO;
}