elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Entrar al Canal Oficial Telegram de elhacker.net


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda sobre variables.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda sobre variables.  (Leído 2,446 veces)
Drewermerc

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Duda sobre variables.
« en: 21 Septiembre 2014, 06:41 am »

Hola a todos.
Bueno quiero saber cual es la diferencia entre usar las variables con nombres normales por así decirle como:
Código
  1. int a;
  2. short int p;
  3. unsigned int r;
  4. char b;
  5. char s[6];
  6. float c;
  7. etc.
  8.  
a usar estas por lo que yo entendido son los mismo, se refieren a un tipo de variable como los antes mencionados:
Código
  1.   int64_t t;
  2.   uint8_t   a;
  3.   uint16_t c;
  4.   uint32_t d;
  5.   uint8_t g;
  6.   uint32_t r[5];
  7.  
lo que aun no me queda muy claro es cual seria para float, char, double etc la única que si creo saber para que representa es int64_t = long int, int32_t = int, int16_t = short int.
Bueno espero que me puedan ayudar.
Saludos.
Drewermerc.


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Re: Duda sobre variables.
« Respuesta #1 en: 21 Septiembre 2014, 08:01 am »

La diferencia es que las variables de codigo normal van apegadas a las reglas del compilador, es decir diferentes compiladores pueden manejarlo en diferente tamaño (aunque cumple un standard minimo) segun lo consideren, ej si compilas para 32bits, en compilador hara de ese el largo del int, en cambio, uintX_t es un especificacion puntual y exacta en bits donde sea necesaria precisión de bits.

Sin embargo char no tiene comparación directa (aunque perfectamente se pueda usar uint8 para unsigned char) porque sabemos que los char son 1byte (aunque hay sistemas que los pueden hacer de 2 byte)

Por otro lado no existe comparacion para float, ni double creo que es porque no requieren la exactitud de bytes

De todas formas aquí la Wikipedia con mas info
http://en.wikipedia.org/wiki/Stdint.h


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
Drewermerc

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Duda sobre variables.
« Respuesta #2 en: 21 Septiembre 2014, 21:48 pm »

Hola angel lex.
Muchas gracias por responder.
solo tengo una pregunta cuando se pueden usar este tipo de definiciones ya que si las uso por ejemplo con fgets o declaro:
Código
  1. uint8_t f[10] ;
  2. uint8_t *uno[] = {"uno", "dos"} ;
  3. fgets(f, sizeof f, stdin);/*me da mucho error el compilador */
  4. uint16_t d;
  5. scanf("%d", &d) ;/*me dice:
  6.  warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int16_t *' [-Wformat]*/
  7.  

Saludos.
Drewermerc.
En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: Duda sobre variables.
« Respuesta #3 en: 21 Septiembre 2014, 22:05 pm »

las usas cuando realmente necesitas una precisión en bits que no varíe con la arquitectura...
En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda sobre variables.
« Respuesta #4 en: 22 Septiembre 2014, 03:57 am »

solo tengo una pregunta cuando se pueden usar este tipo de definiciones ya que si las uso por ejemplo con fgets o declaro:
Código
  1. uint8_t f[10] ;
  2. uint8_t *uno[] = {"uno", "dos"} ;
  3. fgets(f, sizeof f, stdin);/*me da mucho error el compilador */
  4. uint16_t d;
  5. scanf("%d", &d) ;/*me dice:
  6. warning: format '%d' expects argument of type 'int *', but argument 2 has type 'int16_t *' [-Wformat]*/
En el caso de fgets esta espera como primer argumento un valor de tipo "char *" con el tipo "char" equivalente a "signed char" o "unsigned char" dependiendo de la implementación, lo usual es el tipo con signo. En ese escenario estarías pasando un valor de tipo "unsigned char *" a la función cuando esta requiere un "signed char *".

En el caso de scanf "%d" indica que el segundo argumento sera de tipo "signed int *" mientras que tu pasas "&d" cuyo tipo es "unsigned entero_16 *", ahí el calificador de signo (como posiblemente el tamaño de los tipos) no coincide.

A eso hay que sumarle que los tipos intN_t y uintN_t son opcionales.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Drewermerc

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Duda sobre variables.
« Respuesta #5 en: 22 Septiembre 2014, 04:24 am »

bueno gracias por responder angel lex y rir3760.
Ya entendí como funciona mas o menos  int  pero con el que toda vía no encuentro como implementarlo  buen es quiero aprender  manjar bien este tipo de variables no se si sepan de algún libro o web donde me pueda documentar sobre este tema.
Entonces se puede manejar un programa ya esa usando char, int o uintN_t o intN_t?
es que lo que estoy tratando es un programa así básico como este.
Código
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <stdlib.h>
  4. #include <string.h>
  5.  
  6. int main(void)
  7. {
  8. int8_t *uno[]={"hola", "como"};
  9. int32_t dos;
  10. uint16_t tres;
  11. int8_t palabra[30];
  12. printf("Introduce un numero\n");
  13. scanf("%d", &dos);
  14. printf("tu numero es%hu\n", dos);
  15. printf("%s\n", *uno);
  16. fgets(palabra, sizeof palabra, stdin);
  17. printf("tu palabra es %s\n", palabra);
  18. return EXIT_SUCCESS;
  19. }
  20.  
donde me da problema es al usar char ya use tanto uint8_t como int8_t y me manda estos mensajes de warning al inicializar  el uno y pasar el parámetro a fgets.
Código
  1. prueba_uint.c: In function 'main':
  2. prueba_uint.c:8:2: warning: pointer targets in initialization differ in signedness [-Wpointer-sign]
  3. prueba_uint.c:8:2: warning: (near initialization for 'uno[0]') [-Wpointer-sign]
  4. prueba_uint.c:8:2: warning: pointer targets in initialization differ in signedness [-Wpointer-sign]
  5. prueba_uint.c:8:2: warning: (near initialization for 'uno[1]') [-Wpointer-sign]
  6. prueba_uint.c:16:2: warning: pointer targets in passing argument 1 of 'fgets' differ in signedness [-Wpointer-sign]
  7. In file included from prueba_uint.c:1:0:
  8. /usr/include/stdio.h:624:14: note: expected 'char * __restrict__' but argument is of type 'int8_t *'
  9.  
Bueno espero que me puedan ayudar.
Saludos.
Drewermerc.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.414


ASMático


Ver Perfil WWW
Re: Duda sobre variables.
« Respuesta #6 en: 22 Septiembre 2014, 17:20 pm »

Las palabras del profesor Oak resuenan: "Usa cada cosa en su momento."

Si vas a trabajar con caracteres, repito, caracteres, lo lógico es usar char.
Si vas a trabajar con valores numéricos de tamaños fijos, usar el set de variables "uintX_t" y compañía puede ser útil.

Todo esto, obviamente, salvo excepciones, o salvo que exista un alto control del lenguaje.
En línea

Drewermerc

Desconectado Desconectado

Mensajes: 259



Ver Perfil WWW
Re: Duda sobre variables.
« Respuesta #7 en: 24 Septiembre 2014, 21:15 pm »

Hola ivancea96.
Bueno gracias por responder ya me quedo mas claro este tema de uintN_t.

Saludos.
Drewermerc.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[BATCH] Duda sobre variables tipo %X:~0,1%
Scripting
8789poli 4 2,345 Último mensaje 24 Mayo 2009, 01:19 am
por leogtz
Duda sobre utilización de variables « 1 2 »
Programación C/C++
Bl4ck3lf 12 2,725 Último mensaje 20 Diciembre 2012, 19:45 pm
por Bl4ck3lf
Duda sobre variables y constantes
PHP
Senior++ 2 1,280 Último mensaje 21 Noviembre 2013, 19:48 pm
por Senior++
Duda sobre variables
PHP
Grave 3 1,338 Último mensaje 17 Junio 2014, 17:18 pm
por Grave
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines