AspiranteJunior Postado Julho 26, 2009 Denunciar Share Postado Julho 26, 2009 Pessoal, estava conversando com um brother meu aqui e percebemos que <= e >= não tem utilidade algum em programação, uma vez que:if varLoka >= varNormalcorresponde àif varNormal < varLoka>= faz duas comparações, se é maior, e se é igual... se uma das duas for verdadeida, ele retorna true...Vendo assim, não dá para perceber que >= é inútil e mais pesado, não?Ou alguém tem algum exemplo em que >= e <= seja realmente útil(insubistituível pelo < sem perder eficiência)? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Luiz Rodrigo Postado Julho 26, 2009 Denunciar Share Postado Julho 26, 2009 Acho que você se confundiu um pouco, pois o < retorna exatamente o contrário de >=, sendo necessário usar o operador de complemento (não) para obter o resultado desejado. Um dos pontos a favor do >= e <= é legibilidade. É muito mais fácil de ler um código do tipoif ( x >= y ) que um do tipo if ( !(x <y) )Sobre ser mais ou menos lento, é irrelevante, pois a maioria dos processadores atuais consegue fazer milhões de operações de comparação entre tipos primitivos por segundo (uma operação de escrita no console leva muito mais tempo). Também não faz muito sentido dizer que o >= faz duas comparações, porque não sabemos (eu pelo menos não sei) como a ULA do processador realiza a comparação. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Jonathan Queiroz Postado Julho 26, 2009 Denunciar Share Postado Julho 26, 2009 Na verdade o que ele diz é que, por < retornar o contrário de >=, é possível utilizar o outro operador e inverter a operaçãoPor exemplo:(x>=y) = (y<x)Quanto à forma como é processada essa operação eu não sei. Quando tiver tempo vou verificar como fica o código em assembly resultante de uma comparação como essa em C.Mas mesmo que haja essa diferença, como o Luiz Rodrigo já falou, é algo praticamente insignificante. Esse operador costuma ser utilizado por questão de legibilidade do código. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Denis Courcy Postado Julho 27, 2009 Denunciar Share Postado Julho 27, 2009 De acordo com os compiladores modernos não há distinção de tempo entre as comparações (x>=y) = (y<x) Tomando-se por base números com/sem sinais de 8 ou 16 bits Tem-se a instrução básica: CMP <destino><origem> JCC <etiqueta> Onde: CC de números com sinal |CC de números sem sinal G (Greater) |A (Above) L (Less) |B (Below) E (Equal) |E (Equal) N (Not) |N (Not) A instrução JCC para >= e/ou !< em comparação de numeros sem sinal ficaria Instrução | Descrição | Condição vedadeira JAE | Jump if Above or Equal | Destino >= origem JNB | Jump if Not Belowcomo você podem ver existem 2 instruções, apenas. A comparação (CMP <destino><origem> ) e a ação conforme a resposta (JCC <etiqueta>) Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
AspiranteJunior
Pessoal, estava conversando com um brother meu aqui e percebemos que <= e >= não tem utilidade algum em programação, uma vez que:
if varLoka >= varNormal
corresponde à
if varNormal < varLoka
>= faz duas comparações, se é maior, e se é igual... se uma das duas for verdadeida, ele retorna true...
Vendo assim, não dá para perceber que >= é inútil e mais pesado, não?
Ou alguém tem algum exemplo em que >= e <= seja realmente útil(insubistituível pelo < sem perder eficiência)?
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.