Сообщение Re[7]: семантика switch/case от 16.12.2015 16:00
Изменено 16.12.2015 16:05 ononim
O>>фор в отличие от вайла допускает отсутствие любой своей части, вплоть до
O>>
__>что, согласитесь, нельзя отнести к "совсем-совсем другой семантике" (по сравнению с while).
O>>что кстати многие, включая меня, считают более адекватным выражением бесконечного цифра нежели while(1)
__>а по мне, так while(true) более естественно выглядит, чем пустое условие в for (;)
Ну, если считать что бесконечный цикл — это такой цикл у которого нет условия выхода — то for(;) логичнее, ибо в нем реально нет условия выхода. А while(true) — это цикл с условием выхода, которое просто бесконечно не выполняется.
O>>Чтонить банальнохитрое типа:
O>>
O>>..с применением вайла будет выглядеть, примерно настолько же понятнее как многоэтажный switch-case переделанный на ифы. Но и настолько же длиннее.
__>это пример кода, который уважаемые люди рекомендуют никогда не писать, если только вы не собираетесь больше никогда его не сопровождать в дальнейшем.
Ну да, в отличии от многоэтажных кейсов так я почти никогда не пишу, только если очень тороплюсь
O>>
for (;;)
__>что, согласитесь, нельзя отнести к "совсем-совсем другой семантике" (по сравнению с while).
O>>что кстати многие, включая меня, считают более адекватным выражением бесконечного цифра нежели while(1)
__>а по мне, так while(true) более естественно выглядит, чем пустое условие в for (;)

Ну, если считать что бесконечный цикл — это такой цикл у которого нет условия выхода — то for(;) логичнее, ибо в нем реально нет условия выхода. А while(true) — это цикл с условием выхода, которое просто бесконечно не выполняется.
O>>Чтонить банальнохитрое типа:
O>>
bool get_fileext(char *dst, size_t len, const char *src)
O>>{
O>> for ( len = (src = strrchr(src, '.') ) ? len : 0; (len > 1 && !!(*dst=*src)); --len,++src,++dst);
O>> *dst = 0;
O>> return !*src;
O>>}
O>>..с применением вайла будет выглядеть, примерно настолько же понятнее как многоэтажный switch-case переделанный на ифы. Но и настолько же длиннее.
__>это пример кода, который уважаемые люди рекомендуют никогда не писать, если только вы не собираетесь больше никогда его не сопровождать в дальнейшем.
Ну да, в отличии от многоэтажных кейсов так я почти никогда не пишу, только если очень тороплюсь

Re[7]: семантика switch/case
O>>фор в отличие от вайла допускает отсутствие любой своей части, вплоть до
O>>
__>что, согласитесь, нельзя отнести к "совсем-совсем другой семантике" (по сравнению с while).
O>>что кстати многие, включая меня, считают более адекватным выражением бесконечного цифра нежели while(1)
__>а по мне, так while(true) более естественно выглядит, чем пустое условие в for (;)
Ну, если считать что бесконечный цикл — это такой цикл у которого нет условия выхода — то for(;) логичнее, ибо в нем реально нет условия выхода. А while(true) — это цикл с условием выхода, которое просто бесконечно не выполняется.
Кстати отличия switch от if дае глубже чем просто проваливающиеся бряки. Бряков в нем может быть много, даже без проваливания:
O>>Чтонить банальнохитрое типа:
O>>
O>>..с применением вайла будет выглядеть, примерно настолько же понятнее как многоэтажный switch-case переделанный на ифы. Но и настолько же длиннее.
__>это пример кода, который уважаемые люди рекомендуют никогда не писать, если только вы не собираетесь больше никогда его не сопровождать в дальнейшем.
Ну да, в отличии от многоэтажных кейсов так я почти никогда не пишу, только если очень тороплюсь
O>>
for (;;)
__>что, согласитесь, нельзя отнести к "совсем-совсем другой семантике" (по сравнению с while).
O>>что кстати многие, включая меня, считают более адекватным выражением бесконечного цифра нежели while(1)
__>а по мне, так while(true) более естественно выглядит, чем пустое условие в for (;)

Ну, если считать что бесконечный цикл — это такой цикл у которого нет условия выхода — то for(;) логичнее, ибо в нем реально нет условия выхода. А while(true) — это цикл с условием выхода, которое просто бесконечно не выполняется.
Кстати отличия switch от if дае глубже чем просто проваливающиеся бряки. Бряков в нем может быть много, даже без проваливания:
switch (var)
{
case 1:
if(something1a()) break;
if(something1b()) break;
if(something1c()) break;
something1();
break;
case 2:
if(something2a()) break;
if(something2b()) break;
if(something2c()) break;
something2();
break;
}
O>>Чтонить банальнохитрое типа:
O>>
bool get_fileext(char *dst, size_t len, const char *src)
O>>{
O>> for ( len = (src = strrchr(src, '.') ) ? len : 0; (len > 1 && !!(*dst=*src)); --len,++src,++dst);
O>> *dst = 0;
O>> return !*src;
O>>}
O>>..с применением вайла будет выглядеть, примерно настолько же понятнее как многоэтажный switch-case переделанный на ифы. Но и настолько же длиннее.
__>это пример кода, который уважаемые люди рекомендуют никогда не писать, если только вы не собираетесь больше никогда его не сопровождать в дальнейшем.
Ну да, в отличии от многоэтажных кейсов так я почти никогда не пишу, только если очень тороплюсь
