所以我有一个随机字生成器,它使用一个开关随机地将一个单词分配给一个变量。
但是,经过一些测试,我发现它总是运行'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:
语句。
答案 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)
你必须在每个案件后打破,即使这似乎违反直觉/不必要。