[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Problemas com o if




On Wed, 18 Nov 1998, Wagner Cesar Bruna wrote:

> Ola!
> 
>   Acho que voce especificou o ponteiro como "char *palavra" ou algo
> assim. Experimente usar "unsigned char"; se vc usar o tipo com sinal,
> todos os caracteres acima de 127 retornarao numeros negativos, e a
> condicao "palavra[posicao] < 'A'" sempre retornara verdadeira...

falando nisso, qual é o uso correto do "unsigned" alguem pode me explicar?
@lex
> 
> T+
> Wagner Bruna
> wbruna@linux.ime.usp.br
> 
> 
> On Tue, 17 Nov 1998, Daniel Cukier wrote:
> 
> >no meu ep3a eu estou tento um problema muito estranho.
> >en certa altura do programa, desejo saber se o caractere que está sendo lido
> >é uma letra ou um caractere separador de palavras.
> >o código é o seguinte
> >
> >if (    (palavra[posicao]>'Z' && palavra[posicao]<'a')
> >||palavra[posicao]<'A'
> >||(palavra[posicao]>=123 && palavra[posicao]<=126)     ){
> >/*serao considerados separadores de palavras todos carac. nas condicoes
> >acima
> >os outros caracteres da tabela sao considerados letras e portanto, podem
> >ser parte de palavras. Os numeros podem separar palavras, logo, por exemplo
> >abacaxi9melancia e' considerado duas palavras separadas, como se houvesse um
> >espaco entre elas.*/
> >
> >o caractere atual é representado por palavra[posicao]
> >nesse caso, o if testa se o caractere é um separador, ou seja, (, . ! ? { }
> >etc)
> >considerei separador assim:
> >
> >1 - todo caractere da tabela ASC entre o "Z" e o "a"
> >2 - todo caractere < "A" (inclusive os números)
> >3 - os caracteres 123, 124, 125 e 126 da tabela ASC
> >
> >os outros caracteres são todos letras que podem formar palavras
> >
> >Agora a parte estranha:
> >quando o caractere testado tem código asc >126, o programa "entra" no if.
> >Nào deveria entrar, pois não consta nas condições. O mais engraçado é que,
> >se eu coloco essa expressão, exatamente como ela aparece acima, no "WATCH"
> >do TURBO C++, ele retorna o valor com "0", ou seja, a condição é falsa.
> >E agora?
> >O "WATCH" diz que é falsa, mas o programa entra na condição!!! Onde estou
> >errando!
> >
> >Daniel Cukier
> >
> >
>