Розглянемо наступне switchтвердження:
switch( value )
{
case 1:
return 1;
default:
value++;
// fall-through
case 2:
return value * 2;
}
Цей код компілюється, але чи дійсний він (= визначена поведінка) для C90 / C99? Я ніколи не бачив код, де випадок за замовчуванням - не останній випадок.
EDIT:
Як пишуть Джон Кейдж і KillianDS : це дійсно некрасивий і заплутаний код, і я це добре знаю. Мене просто цікавить загальний синтаксис (він визначений?) Та очікуваний вихід.
gotoне є злим. Прихильники вантажного культу є! Ви не можете собі уявити, до яких крайнощів люди можуть уникнути, gotoоскільки це, мовляв, таке зло, що створює справжній нечитабельний безлад свого коду.
gotoосновному для імітації чогось на зразок finallyпункту у функціях, де ресурси (файли, пам'ять) повинні бути випущені під час зупинки та повторювати для кожного випадку помилки перелік freeі closeне допомагає читати. Хоча одне використання gotoцього я хотів би уникнути, але не можу, - це коли я хочу вирватися з циклу, і я перебуваю switchв цьому циклі.