Учитывая простой оператор switch
switch (int)
{
case 1 :
{
printf("1\n");
break;
}
case 2 :
{
printf("2\n");
}
case 3 :
{
printf("3\n");
}
}
Отсутствие оператора break в случае 2 означает, что выполнение будет продолжаться внутри кода для случая 3. Это не случайность; он был спроектирован именно так. Почему были приняты эти решения? Какая польза от этого обеспечит против наличия автоматической семантики разрыва для блоков? В чем была причина?