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( );
}
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( );
}
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.