请教一个关于switch() 里的 default 语句的有关问题

请问一个关于switch() 里的 default 语句的问题
int main(void)
{
    font sample = 1 | (12 <<SIZE_SHIFT) | LEFT | ITALIC;
    
    while (do_menu(&sample) != 'q')
        continue;
    puts("Bye!");
    return 0;
}

char do_menu(font * f)
{
    char response;
    
    show_font(*f);
    show_menu();
    response = get_choice("fsabiuq");      // 这里确保了 输入数据在这几个字母之间;
    switch(response)
    {
        case 'f' : get_id(f); break;
        case 's' : get_size(f); break;
        case 'a' : get_align(f); break;
        case 'b' : *f ^= BOLD; break;
        case 'i' : *f ^= ITALIC; break;
        case 'u' : *f ^= UNDERLINE; break;
        case 'q' : break;
        default  : fprintf(stderr, "menu problem\n");       // 这里为什么还要用个default 语句啊??
    }                                                                      // 根本不可能 用到default的啊!!
    
    return response;
}


------解决方案--------------------
default:  就是不满足以上所有条件时执行的
------解决方案--------------------
楼上正解!不可预估的错误也要考虑好,这样才会减少BUG!
------解决方案--------------------
我写程序我就是把使用程序的人当做白痴一样来写程序

你自己知道怎么输入才对

但是其他使用的人你就不知道他会如何操作了
------解决方案--------------------
代码风格问题。。。不怕一万,就怕万一。。Bug往往就是这样产生的。