_toupper (Linguagem C)

6 respostas
C

Alguém sabe como funciona essa macro?
Pq quando o caracter já é maiúsculo ela dá um retorno nada a ver?

6 Respostas

E

_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.

C

Antes de mais nada, obrigado! hehe

Mas como vc sabe esses detalhes? =~
Me recomenda algum site ou livro?

E

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 :slight_smile: )

#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.

C

Eu uso o dev, mas jah me disseram q ele eh meio ultrapassado… :XD:

E

Use o Code::Blocks (atenção, nunca usei isso - estou indicando o que o ViniGodoy recomenda.)

C

Vou dar uma olhada! hehehe
vlw! :thumbup:

Criado 18 de novembro de 2010
Ultima resposta 18 de nov. de 2010
Respostas 6
Participantes 2