uint16_t [RESOLVIDO]

1. uint16_t [RESOLVIDO]

kiotto
kiotto

(usa Ubuntu)

Enviado em 29/11/2008 - 10:53h

Boas

Gostava de saber que tipo de dados é este uint16_t

Obrigado


  


2. Re: uint16_t [RESOLVIDO]

Marcelo A. B. Slomp
mslomp

(usa Slackware)

Enviado em 29/11/2008 - 13:27h

essa série de tipos (uintX_t, ulongX_t, etc) foi definida pela C99 para "suavizar" algumas deficiências que a rigidez de alguns tipos de dados característicos da construção da linguagem C (e C++) demandam. uma delas é a questão da portabilidade. não a portabilidade entre sistemas, mas sim entre plataformas.
um exemplo clássico é justamente o tipo int. em algumas máquinas, int possui tamanho 1 word, em outras, 2 words, noutras 4 words, e assim por diante - verificado facilmente através de sizeof(int). contudo, em algumas aplicações você necessita que, independentemente da plataforma, sua variável int possua, digamos, 4 words (16 bytes). para garantir isso, você então pode utilizar int16, com a certeza de que compilando seu código tanto para x86 quanto para dec alpha, por exemplo, sua variável terá exatamente 16 bytes. daí a razão pela qual você encontrará muitas variáveis desse tipo no código fonte do kernel, que é um clássico do reino multiplataforma.
outra característica é que esses tipos podem se comportar de diversas maneiras, além do convencional. um exemplo disso é o modo fast, que torna funções que operam segundo chamadas fastcall ligeiramente otimizadas quando seus argumentos são desse tipo. mas esses são detalhes internos que não afetam muito a vida do programador, visto que é papel do compilador "enxergar" essas características para fazer as adequações correspondentes.

então, traduzindo:
uint16_t
u = unsigned
int = int :)
16 = tamanho fixo, em bytes
_t = sufixo de convenção de construção de tipo (através de typedef)






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts