Я не совсем понимаю. Насколько плохо делать вот так.
switch(ch)
{
case '%': case '$': case '#': foo(ch); break;
case '!': bar(ch); break;
default: break;
}
Вместо этого
switch(ch)
{
case '%': foo(ch); break;
case '$': foo(ch); break;
case '#': foo(ch); break;
case '!': bar(ch); break;
default: break;
}
Или первое разворачивается во второе и всё хорошо? Тут коротко для примера, но допустим таких case 1: case 50 case 500: ... bla(data)
штук 100500.
UDP: Разницы нет, ассемблерный вывод одинаковый gcc/clang. Но я так и не нашёл где явно описано.
UDP2: Разница есть, но мужно для каждого конкретного случая смотреть чего да как объяснения ниже.