switch(ch)
{
//input a number
case '1':
case '2':
case '3':
case '4':
case '5':
case '6':
case '7':
case '8':
case '9':
if(check_original())
{
int y = g.y;
int x = g.x;
g.board[g.y][g.x] = ch - '0';
draw_numbers();
g.y = y;
g.x = x;
show_cursor();
}
// delete an input from the board
case '0':
case KEY_BACKSPACE:
case KEY_DC:
if(check_original())
{
int y = g.y;
int x = g.x;
g.board[y][x] = 0;
draw_numbers();
g.y = y;
g.x = x;
show_cursor();
}
}
问题:案例'1'到案例'9'工作正常。然后我添加了case'0',case KEY_BACKSPACE和case KEY_DC。虽然它编译,但现在没有一个案例有效,包括案例'1' - '9'。我错过了什么?
答案 0 :(得分:6)
你的所有案件都在崩溃。我假设您应该break;
之前case 0:
。
答案 1 :(得分:2)
您错过了break;
。在C中,switch
具有直通语义。一旦满足一个案例,除非break;
停止执行,否则所有后续案例都会有效。