É possível evitar muitos "ors" (|||) em condições que causem a mesma ação? - página 8

 
paladin80:

Em meus programas, se houver muitos "ses", utilizo esta construção, com as condições que na maioria das vezes darão falso em primeiro lugar:

E se eu precisar verificar muitos "se-ops", eu uso desta maneira:
Obrigado, Maxim! Mas isso não é bom, porque as diferentes condições que eu tenho não são comparáveis em lógica, nem em parâmetros!
 
alsu:

Não, não funciona dessa forma. Primeiro, deve haver algo depois de se(), pelo menos um ponto-e-vírgula (ou seja, um operador vazio) . Em segundo lugar, a qual dos "se" seu outro operador está destinado a pertencer? Se se referir apenas à última (como você a escreveu), então a Ação só será executada se a condição D for verdadeira, desde que A, B e C sejam falsas. É sempre recomendável colocar suportes encaracolados para ver a lógica de forma clara.

Se meu destaque for possível, então é uma boa idéia fazê-lo desta maneira:

if (!A && !B && !C && !D) ;//пустой оператор
else Action();

  

Como? Possível? -------------------------- Eu o verifiquei em código, o compilador dá um aviso;

C: Arquivos de programa inesperados...

Se funcionar, será que podemos suportar o aviso também?!

 
borilunad:

Se a que destaquei é possível, então seria bom que assim fosse:

Como? Possível? -------------------------- Verificado no código, o compilador emite um aviso;

C: Arquivos de programa inesperados...

Se funcionar, será que podemos suportar o aviso também?!

if (!A && !B && !C && !D) return(0); //закончение действия программы
else Action();
 
paladin80:

Muito obrigado! Como é fácil!

No entanto, tive que colocar este bloco no final do início, porque o retorno(0) não deixou mais nada funcionar depois dele.

 
Alguém já mediu a velocidade? )))
 
TheXpert:
Alguém já mediu a velocidade? )))

Vou fazer uma medição!

Eu finalmente a medi! São 17,26! Isso é 10 minutos a mais do que o melhor se() sem truques em seis meses no testador. Desculpe, mas não há nada que possa ser feito! Vou continuar cavando! Obrigado a todos! Mas é muito cedo para resumir ainda!

 
borilunad:

Se a que destaquei é possível, então seria bom que assim fosse:

Como? Possível? -------------------------- Verificado no código, o compilador emite um aviso;

C: Arquivos de programa inesperados...

Se funcionar, será que podemos suportar o aviso também?!


Um aviso é dado caso alguém simplesmente coloque uma vírgula no lugar errado(o operador vazio ';' não é usado com freqüência). Esta construção funciona e é perfeitamente legal.
 
borilunad:
Eu vou tomar uma medida!

Mas você tem que verificar todas as opções. Caso contrário, você poderia estar errado.
 
borilunad:

Se a que destaquei é possível, então seria uma boa idéia fazê-lo:

Como? Possível? -------------------------- Verificado no código, o compilador emite um aviso;

C: Arquivos de programa inesperados...

Se funcionar, será que podemos suportar o aviso também?!

Para tornar as advertências menos incômodas, use: {}

if (!A && !B && !C && !D) {} //пустой оператор
else Action();

 
PapaYozh:

Para evitar que as advertências se desorganizem nos olhos, use {}: {}

Obrigado! Vou tentar esses parênteses agora!