Dúvida básica sobre condicionais.

1. Dúvida básica sobre condicionais.

rob
robgeek

(usa Debian)

Enviado em 28/08/2016 - 20:06h

Boa noite, pessoal!

Queria saber se essas duas formas de se fazer condicionais são realmente iguais ou se internamente elas se comportam de forma diferente, embora apresentem o mesmo resultado final.

Pergunto isso, porque um amigo meu me disse que, internamente, as condicionais aninhadas são mais eficientes. Por exemplo, no caso do ||. Se eu usar duas ou mais condições juntas no mesmo if, mesmo que a primeira condição fosse satisfeita, o programa checaria a segunda condição por estarem juntas no mesmo if. Se eu separar elas, isso não acontece, pois a segunda condição está em outro if.

//Condicionais OR
if((x < 2) || (x > 8)) {//Segundo meu amigo, assim é pior.
func1( );
}


if(x < 2) { //Assim é melhor.
func1( );
}
else if(x > 8) {
func1( );
}




Já no caso do &&, o raciocínio é o mesmo. Mesmo que a primeira condição não seja satisfeita, por estarem no mesmo if, o programa vai checar a segunda condição. Já se estiverem separadas, mas aninhadas, isso não acontece. Se a primeira condição não for satisfeita o programa não vai checar a segunda que está por dentro.
//Condicionais AND
if((x < 2) && (x > 8)) {//Segundo meu amigo, assim é pior.
func1( );
}


if(x < 2) {//Assim é melhor.
if(x > 8) {
func1( );
}
}


Sinceramente, parece que faz sentido para mim, mas não sei se é verdade. Essas checagens a mais desnecessárias contam desempenho quando temos essas condicioniais dentro de loops muito grandes.

É verdade isso que ele me disse?


  


2. Re: Dúvida básica sobre condicionais.

Paulo
paulo1205

(usa Ubuntu)

Enviado em 28/08/2016 - 20:16h

O que o seu amigo disse pode ser verdade em outras linguagens de programação, mas não em C, C++, Java, e possivelmente todas as linguagens derivadas do C.

Em C, todas as expressões condicionais são avaliadas em “curto circuito”, ou seja, a primeira subexpressão verdadeira num encadeamento de ous torna a expressão verdadeira sem que as demais subexpressões sejam avaliadas, e a primeira subexpressão falsa num encadeamento de es interrompe a cadeia, dando à expressão o valor falso.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts