Switch始终运行相同的case语句Xcode 5

时间:2013-11-25 19:54:37

标签: objective-c switch-statement xcode5

所以我有一个随机字生成器,它使用一个开关随机地将一个单词分配给一个变量。

但是,经过一些测试,我发现它总是运行'case 2'而且从不case 0,1或default。

这是我的代码:

int randWord1 = rand() % 2;
switch (randWord1) {
    case 0:
        mainTextView.text = @"1";


    case 1:
        mainTextView.text = @"2";


    case 2:
        mainTextView.text = @"3";

    break;

    default:
    break;
}

修改

在代码中关闭拼写错误的问题后,我发现问题是我忘记在每个break;语句后添加case X:语句。

2 个答案:

答案 0 :(得分:3)

这就是你所缺少的:

Case 0 {
mainTextView.text = @"1";
break;
}

Case 1 {
mainTextView.text = @"2";
break;
}

Case 2 {
mainTextView.text = @"3";
break;
}
Default:

请注意每个break中的Case x

C中,如果您未在下一个break之前放置正确的Case语句,则会执行每个案例。在您的情况下,由于Case 2是包含任何可执行语句的最后一种情况,因此您始终会将mainTextView.text设置为3。如果,为了争论你有

Default: {
mainTextView.text = @"foo";
break;
}

您每次都会看到foo,因为break之后没有Case 2:

答案 1 :(得分:1)

你必须在每个案件后打破,即使这似乎违反直觉/不必要。