unsigned int 8 , unsigned int 8 y demas [DUDA]

Iniciado por bash, 8 Abril 2015, 19:02 PM

0 Miembros y 1 Visitante están viendo este tema.

bash

Buenas a todos !!
Me gustaria consultar si es posible que alguine me explique como puedo usar los tipos de datos :

Código (cpp) [Seleccionar]

unsigned int8 O uint8_t;
unsigned int16 o uint16_t



se que puedo usar
Código (cpp) [Seleccionar]

#include<stdint.h>


pero me gustaria por favor si es posible que alguine aqui me de una explicacion de uso y utilidad.


Gracias por todo!!
gracias por responder mis dudas

ivancea96

El número es el número de bits de la variable. int es un entero. La 'u' al principio es cuando es unsigned.

¿Las utilidades? Son variables, como otra variable cualquiera, pero de un tamaño fijo.

bash

gracias por la respuesta !!

Entiendo eso pero como se que sin usar las variables definidas en un header estandar


por ejemplo:

Código (cpp) [Seleccionar]
typedef unsigned int 8 UINT8;

Como me aseguro que sea de 8 bit y no mas , bueno quiero saber eso por que me tiene confundio , a parte digo de utilidad por que por ejemplo estoy viendo un tutorial de como hacer un emulador(si lo quizas es muy pronto pero tengo interes) y veo como el chico decide usar esos tipos de datos en vez de usar unsigned int y ya ..

eso me confunde un poco, me doy a entender?
Gracias
gracias por responder mis dudas

ivancea96

int puede ser de 16 o 32 bits, según el sistema.

En cambio, int32_t te asegura siempre que es de 32 bits. Si necesitas un tamaño fijo (como en los emuladores), usa esas variables. De hecho, yo te recomiendo usarlas siempre que el dato con el que trabajas tenga unos valores mínimos y máximos conocidos, simplemente porque es más preciso programarlo así.

bash

jejejeje si es verdad tienes razon , pero mi pregunta es como puedo definirla yo ? he estado buscando como pero no he encontrado. quizas en el codigo fuente de gcc pueda conseguirla , es posible eso?

nota: cuando digo conseguirla es la respuesta.
gracias por responder mis dudas

ivancea96

Puedes ver el archivo stdint.h. Te pongo un fragmento:

/* 7.18.1.1  Exact-width integer types */
typedef signed char int8_t;
typedef unsigned char   uint8_t;
typedef short  int16_t;
typedef unsigned short  uint16_t;
typedef int  int32_t;
typedef unsigned   uint32_t;
typedef long long  int64_t;
typedef unsigned long long   uint64_t;

/* 7.18.1.2  Minimum-width integer types */
typedef signed char int_least8_t;
typedef unsigned char   uint_least8_t;
typedef short  int_least16_t;
typedef unsigned short  uint_least16_t;
typedef int  int_least32_t;
typedef unsigned   uint_least32_t;
typedef long long  int_least64_t;
typedef unsigned long long   uint_least64_t;

/*  7.18.1.3  Fastest minimum-width integer types
*  Not actually guaranteed to be fastest for all purposes
*  Here we use the exact-width types for 8 and 16-bit ints.
*/
typedef signed char int_fast8_t;
typedef unsigned char uint_fast8_t;
typedef short  int_fast16_t;
typedef unsigned short  uint_fast16_t;
typedef int  int_fast32_t;
typedef unsigned  int  uint_fast32_t;
typedef long long  int_fast64_t;
typedef unsigned long long   uint_fast64_t;

bash

Gracias por la respuesta esta muy bien pero
con este code por ejemplo:
Código (cpp) [Seleccionar]
typedef signed char int8_t;

como el compilador sabe que es solamente de 8 bit por cierto cuando trato de ponerle mas o me da un error o otros me dice que simplemente no se puede.


Gracias otra vez por respuesta.
gracias por responder mis dudas

ivancea96

Cita de: dummy001 en  9 Abril 2015, 16:32 PMcuando trato de ponerle mas o me da un error o otros me dice que simplemente no se puede.

¿Ponerle más qué a qué?

bash

suena extrano !!

si pero si la variable se defiene como
Código (cpp) [Seleccionar]
  typedef unsing int  uint8_t;///donde  esta el 8 definiiendo o simplemente si quiero que mi definicion por ejemplo

Código (cpp) [Seleccionar]
typedef unsigned int MIUNSIGNEDINT; ////como se que esa es de 8 bit ?


me doy a neteder?
gracias por responder mis dudas

ivancea96

Para que sea de 8 bits, tendrás que darle un dato de 8 bits.

Código (cpp) [Seleccionar]
typedef unsigned char uint8_t;

char es de 8 bits. int es de 32 bits.