Re[2]: семантика switch/case
От: _hum_ Беларусь  
Дата: 18.12.15 10:46
Оценка: 12 (1) +2
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, _hum_, Вы писали:


__>>Так что, товарищи, кто еще так же, как и я, заблуждался, будьте внимательны:


CS>На вот еще для просветления:

CS>http://www.codeproject.com/Tips/29524/Generators-in-C



да, спасибо. это начинает прояснять ситуацию с тем, где же, действительно, может быть полезна эта фича.

подводя итог:

1) switch/case — не аналог if, а аналог динамического goto. тот факт, что многие его таким не воспринимают (в том числе и я до недавнего времени), думаю, является результатом того, что в большинстве случаев он используется с break, то есть, в качестве выбора из альтернатив + в учебниках и доках всегда идет в той же теме, что и if, наводя на мысли, что это "из одной оперы", как for и while, а потому бдительность падает + выбор ключевых слов неудачен — не наводит на мысль о goto-переходах и метках (gotocase вместо switch, например, сразу бы наводило ан нужные мысли);

2) это штука в с++ дает возможность реализовать механизм перехода по динамически определяемой метке, чего другими средствами добиться невозможно (только если использовать ассемблерные вставки). в качестве реально полезного применения можно привести возможность реализации на си сопрограмм и парадигмы реактивного программирования (см., например, Reactive C: An Extension of C To Program Reactive Systems)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.