这是相当困难根据您所提供的代码来回答你的问题,因为你没有给会怎么样任何解释在new_pattern:或reset:标签上,或者您如何期望变量的值在没有可能导致此情况发生的指令的循环内发生变化。
相反,您应该尝试遵循structured programming的原则。特别是,你应该考虑使用函数来更合理地组织你的代码。 (选择适当的描述函数的名称也将让你的代码更容易理解。)
你的代码的结构重新工作可能是这个样子:
#define NO_CHANGE 0
#define UPDATE_PATTERN 1
#define RESET_LEDS 2
int main() {
/* ... */
switch(flash_leds()) {
case UPDATE_PATTERN:
new_pattern();
break;
case RESET_LEDS:
reset();
break;
default:
/* Done flashing; no action required */
}
/* ... */
}
int flash_leds() {
for (int i = 0; i < 6; i++) {
/* ... */
if (check == 1) return UPDATE_PATTERN;
if (off == 2) return RESET_LEDS;
}
return NO_CHANGE;
}
void new_pattern() {
/* update the pattern displayed by the LEDs */
}
void reset() {
/* reset the LEDs */
}