_toupper (Linguagem C)  XML
Índice dos Fóruns » Outras Linguagens
Autor Mensagem
cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

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

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

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

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

Antes de mais nada, obrigado! hehe

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

This message was edited 1 time. Last update was at 18/11/2010 19:19:04

entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

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.
cake
JavaTeenager

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

Eu uso o dev, mas jah me disseram q ele eh meio ultrapassado...
entanglement
GUJ Hacker

Membro desde: 26/09/2009 09:18:56
Mensagens: 5750
Offline

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

Membro desde: 23/08/2010 15:31:20
Mensagens: 169
Offline

Vou dar uma olhada! hehehe
vlw!
 
Índice dos Fóruns » Outras Linguagens
Ir para:   
Powered by JForum 2.1.8 © JForum Team