Alguém sabe como funciona essa macro?
Pq quando o caracter já é maiúsculo ela dá um retorno nada a ver?
_toupper (Linguagem C)
6 Respostas
_toupper é uma macro (que você não deveria estar usando, é claro) que simplesmente pega o valor da letra e subtrai 32. Por exemplo, se você olhar o código ASCII da letra ‘a’, vai ver que ele é 97, e se você subtrair 32, dá 65, que é o código da letra A.
Isso, obviamente, é bem burrão mesmo - se você passar a letra ‘A’, e subtrair mais 32, vai dar 33, que é o código do caracter “!”.
Entendeu por que é fria usar esse troço? Não use isso. É uma pegadinha que você não deveria estar usando.
Antes de mais nada, obrigado! hehe
Mas como vc sabe esses detalhes? =~
Me recomenda algum site ou livro?
Nesse caso em particular, eu simplesmente olhei o fonte - que está em ctype.h.
Lá está escrito (no meu compilador - não sei o que você está usando; pode ser diferente
)
#define _toupper(_Char) ( (_Char)-‘a’+‘A’ )
ou seja, ele pega o argumento _Char, e retorna o valor resultante dessa conta. Mas ‘a’ é 97 e ‘A’ é 65, então a conta que ele faz é subtrair o número 32.
Eu uso o dev, mas jah me disseram q ele eh meio ultrapassado… :XD:
Use o Code::Blocks (atenção, nunca usei isso - estou indicando o que o ViniGodoy recomenda.)
Vou dar uma olhada! hehehe
vlw! :thumbup: