Найти в Дзене

break в case - никогда не понимал, зачем он нужен

Поскольку я вырос на Паскале (да и сейчас в основном использую его современные версии), то некоторые особенности С/С++ и им подобных языков мне совершенно непонятны. Например, зачем было делать break в конструкции switch/case?

В Паскале это делается так:

var x : Integer = 1;
case x of
0 : WriteLn(0);
1 : WriteLn(1);
2 : WriteLn(2);
3 : WriteLn(3);
end;

Но можно сделать и так:

case x of
0, 2 : WriteLn(x);
1 : WriteLn(1);
3 : WriteLn(3);
end;

А можно и вот так:

case x of
0..3 : WriteLn(x);
end;

А вот в С++ вам надо обязательно заморочить голову, и в каждом case надо добавлять break:

Я никогда не понимал, зачем надо городить такой огород, зачем нужен break в каждом case. Точнее, зачем он нужен - это понятно. Непонятно, зачем было делать эту конструкцию именно такой.

А всё потому, что в С++ вы не сможете сделать, как в Паскале. Вот такой код:

case 0, 2 :

будет ошибкой. И вот такой тоже:

case 0..2 :

И если вы захотите повторить вот такую конструкцию Паскаля:

case x of
0, 2 : WriteLn(x);
1 : WriteLn(1);
3 : WriteLn(3);
end;

то в С++ это можно сделать так:

-2

То есть case 0 вы должны записать без break, просто “шоб было”, а в case 2 вы уже пишите обработчик для значений х равных 0 или 2.

Таким образом, мы нашли смысл слова break в case. Однако так и не нашли смысла, точнее, причины, почему надо было делать именно так, а не, например, как в Паскале. Ну наверно потому, чтобы отличаться от Паскаля. Вот только отличный - это не всегда хороший.

На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.

Наука
7 млн интересуются