Dúvida simples em C

Enviado:
12 Jul 2007 08:51
por rocknroll
Bom dia senhores,
Estou com uma dúvida em linguagem C. Acredito que a resposta seja simples.
Quero fazer uma verificação de um determinado valor, este valor vai de 0 a 61.
Se o valor estiver entre 0 e 15 ou 32 e 48, ele executa uma função, caso contrario executa outra.
Eu fiz da seguinte forma: col é a variável que contém o valor em questão.
if((col < 16)||(32 <= col <=48)
{
funçãox
}else
{
funçãoy
}
O "if" acima não funcionou, gostaria de saber onde estou errando, pois não tenho muita experiência em C e agora que tenho um tempinho livre estou estudando um pouco.
Obrigado a todos.
Re: Dúvida simples em C

Enviado:
12 Jul 2007 09:44
por assamaral
Faz o "if" separado para cada condição, só para testar e dá uma olhada na declaração das variáveis e inicialização de variáveis...
Sds.
rocknroll escreveu:Bom dia senhores,
Estou com uma dúvida em linguagem C. Acredito que a resposta seja simples.
Quero fazer uma verificação de um determinado valor, este valor vai de 0 a 61.
Se o valor estiver entre 0 e 15 ou 32 e 48, ele executa uma função, caso contrario executa outra.
Eu fiz da seguinte forma: col é a variável que contém o valor em questão.
if((col < 16)||(32 <= col <=48)
{
funçãox
}else
{
funçãoy
}
O "if" acima não funcionou, gostaria de saber onde estou errando, pois não tenho muita experiência em C e agora que tenho um tempinho livre estou estudando um pouco.
Obrigado a todos.

Enviado:
12 Jul 2007 11:46
por ze
if ( (col<16) || ((col>31)&&(col<49)) ) func1();
else func2()
será que funciona??

Enviado:
12 Jul 2007 12:50
por msamsoniuk
nao funciona x<=y<=z pq ele avalia os operandos dois a dois, entao ou ele avalia (x<=y)<=z ou x<=(y<=z), isso depende da implementacao do compilador. mas x<=y ou y<=z resulta em 0 ou 1, entao a proxima avaliacao seria 0<=z ou 1<=z ou x<=0 ou x<=1, o que obviamente eh incorrento em qq um dos casos. assim, para o seu caso, a solucao seria distribuir em (x<=y)&&(y<=z).
em relacao ao uso de < ou <=, acho importante escolher em funcao da legibilidade: se vc tem um range de n a m, eh mais legivel usar, por ex, for(i=n;i<=m;i++), por outro lado, se vc sabe que tem n elementos, fica mais legivel escrever for(i=0;i<n;i++).

Enviado:
12 Jul 2007 13:07
por rocknroll
Obrigado a todos pelas respostas, quando eu tiver um tempo eu efetuarei os testes.
Valeu
Resposta a sua dúvida

Enviado:
12 Jul 2007 15:14
por quispe
Tente este código abaixo. Não é necessário utilizar os parenteses pois os operadores <=, <,> e >= tem precedencia maior que && e ||.
if((col >= 0 && col =< 15) || (col >= 32 && col =< 48))
{
funcaoX();
}
else
{
funcaoY();
}
Obs: Não esqueça dos ponto-vigula e os () na função
Grande Abraço
Daniel
PS. Deve-se incluir col>=0 qdo a sua variável col for com sinal ou declare ela com unsigned int col; por exemplo
www.qsptecnologia.eng.br