[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 92

 
Mathemat:

Ambos são corretos, mas o segundo é mais rápido. A primeira sempre verifica todas as condições, a segunda não verifica todas as condições. E é melhor escrevê-lo assim para evitar confusão com a filiação de outros:

Ou colocar os suportes em torno dos blocos de uma só vez.

Obrigado pelo conselho. Enquanto eu costumava me esforçar para escrever minha EA corretamente em geral, agora me concentro em sua velocidade. :)
 
Mathemat:

Ambos são corretos

Não, os códigos não são iguais em absoluto.
 
Pode ser mais fácil de passar por swith() se as condições não precisarem ser calculadas...
 
TheXpert: Não, os códigos não são de forma alguma mutuamente exclusivos.

Certo, agora vamos especular sobre o que acontece quando cond_1, cond_2, cond_3 não são mutuamente exclusivos...

Não estou discutindo, os códigos dão resultados diferentes em geral. Mas se as condições não se sobrepõem, os resultados parecem ser os mesmos.

 
FAQ:
Pode ser mais fácil passar pela swith(), se você não precisar calcular as condições...
Na troca o valor no caso de dever ser int, nem sempre cond_ é int. Francamente falando, eu estava interessado na própria lógica, cuja entrada é melhor/mais rápida.
 
paladin80:
Na troca o valor no caso deve ser int, nem sempre cond_ é int. Eu estava honestamente interessado na própria lógica, cuja entrada é melhor/mais rápida.
Condições separadas, com as mais freqüentemente utilizadas no topo
 
paladin80:
Na troca o valor no caso deve ser int, nem sempre cond_ é int. Eu estava honestamente interessado na própria lógica, cuja entrada é melhor/mais rápida.

A segunda, mas há uma restrição de nidificação.

É melhor usar o caso, se houver tal possibilidade.

 
Sim, interruptor que eu uso. Quanto às condições mutuamente exclusivas, minha compreensão do fenômeno é a seguinte:
//--- 1.
int x=1, y=1;
if (x==1)
{  if (y>0)  a=result_1;
   if (y<2)  a=result_2;
   if (y==1) a=result_3;
}
// a=result_3

//--- 2.
int x=1, y=1;
if (x==1)
{  if (y>0)            a=result_1;
   else if (y<2)       a=result_2;
        else if (y==1) a=result_3;
}
// a=result_1
 

Você tem exatamente todas as condições atendidas quando y = 1. Eles não são mutuamente exclusivos.

Mutuamente exclusivas são, por exemplo: y<0, y==0, y>0.

 
Mathemat:

Você tem exatamente todas as condições atendidas quando y = 1. Eles não são mutuamente exclusivos.

Mutuamente exclusivas são, por exemplo: y<0, y==0, y>0.

Ok, obrigado a todos por sua disposição em me ajudar. Mais uma vez vou ler cuidadosamente sobre a combinação if-else, não para os postos de lixo aqui. Sobre a exclusão mútua, acho que é assim: y<0, y==0, y>1.