新手:将案例添加到C中的交换机后,它会中断

时间:2012-07-12 19:00:59

标签: c

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'。我错过了什么?

2 个答案:

答案 0 :(得分:6)

你的所有案件都在崩溃。我假设您应该break;之前case 0:

答案 1 :(得分:2)

您错过了break;。在C中,switch具有直通语义。一旦满足一个案例,除非break;停止执行,否则所有后续案例都会有效。