Поскольку я вырос на Паскале (да и сейчас в основном использую его современные версии), то некоторые особенности С/С++ и им подобных языков мне совершенно непонятны. Например, зачем было делать 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;
то в С++ это можно сделать так:
То есть case 0 вы должны записать без break, просто “шоб было”, а в case 2 вы уже пишите обработчик для значений х равных 0 или 2.
Таким образом, мы нашли смысл слова break в case. Однако так и не нашли смысла, точнее, причины, почему надо было делать именно так, а не, например, как в Паскале. Ну наверно потому, чтобы отличаться от Паскаля. Вот только отличный - это не всегда хороший.
На этом всё. Подписывайтесь на канал, чтобы ничего не пропустить.