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

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


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

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Tipo de Dato Unsigned.
« en: 4 Septiembre 2015, 11:40 am »

Buenas  :).

Por lo que tengo entendido las variables unsigned (sin signo) que se refieren a los números enteros positivos ya que se sobreentiende que si no ponemos signo es positivo, porque en programas del tipo:
Código
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main(){
  5.  
  6. printf("Introduce dos enteros para hacer la suma:\n")
  7. int a, b, suma;
  8.  
  9. printf("Introduce un numero para la suma:\n");
  10. scanf("%i",&a);
  11. printf("Introduce el segundo numero:\n");
  12. scanf("%i",&b);
  13.  
  14. suma = a + b;
  15.  
  16. printf("La suma de los dos enteros es: %i ",suma);
  17.  
  18. return 0;

Porque si sabes que en un programa los valores que van a usarse serán positivos en en todo momento no se pueden sustituir los tipos de datos "int" por "unsigned"? Si es así como se representa con el (%"Aquí")  en int ("%i") lo que no se es en unsigned.

Gracias.


En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Tipo de Dato Unsigned.
« Respuesta #1 en: 4 Septiembre 2015, 14:06 pm »

Para unsigned puedes poner "%u" http://www.cplusplus.com/reference/cstdio/scanf/

"int" es más cómodo que "unsigned". Además, no utilices unsigned en el caso de que se puedan poner valores negativos.

En ese ejemplo, se pueden poner números negativos perfectamente.
Sin ir más lejos, mira qué ocurre al asignar un número negativo (Ej. -1) a una variable "unsigned int".


En línea

Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Re: Tipo de Dato Unsigned.
« Respuesta #2 en: 4 Septiembre 2015, 15:10 pm »

Claro, como bien dice ivancea solo debes utilizar unsigned en el caso de que utilices números enteros que solo puedan ser positivos (números naturales). Un ejemplo podría ser los niveles de un personaje de videojuegos, pueden ir del 1 al 100 pero no puedes ser nivel -1, por ejemplo.
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Tipo de Dato Unsigned.
« Respuesta #3 en: 4 Septiembre 2015, 17:42 pm »

Claro, como bien dice ivancea solo debes utilizar unsigned en el caso de que utilices números enteros que solo puedan ser positivos (números naturales). Un ejemplo podría ser los niveles de un personaje de videojuegos, pueden ir del 1 al 100 pero no puedes ser nivel -1, por ejemplo.

Incluso en ese ejemplo, que sea unsigned te quita muchas posibilidades. Por ejemplo, si quieres saber la diferencia de niveles entre dos personajes, harías:
Código
  1. diferencia = abs(nivel1 - nivel2);
Claro que si haces eso con unsigned, te puede dar valores erroneos si nivel2>nivel1.

Habría que buscar otro modo, como:
Código
  1. diferencia = max(nivel1,nivel2) - min(nivel1,nivel2);

Que ya es más rodeo.
En línea

FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Tipo de Dato Unsigned.
« Respuesta #4 en: 4 Septiembre 2015, 19:27 pm »

Teneis razón el ejemplo que he puesto para unsigned era muy cutre...

Gracias por aclarar mis dudas  :)
En línea

Solo hay 10 tipos de personas, las que saben binario y las que no.
Bob1098

Desconectado Desconectado

Mensajes: 87


Ver Perfil
Re: Tipo de Dato Unsigned.
« Respuesta #5 en: 4 Septiembre 2015, 22:36 pm »

Incluso en ese ejemplo, que sea unsigned te quita muchas posibilidades. Por ejemplo, si quieres saber la diferencia de niveles entre dos personajes, harías:
Código
  1. diferencia = abs(nivel1 - nivel2);
Claro que si haces eso con unsigned, te puede dar valores erroneos si nivel2>nivel1.

Habría que buscar otro modo, como:
Código
  1. diferencia = max(nivel1,nivel2) - min(nivel1,nivel2);

Que ya es más rodeo.

Muy cierto, no me lo había planteado de esa manera...
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Error tipo de dato.
Bases de Datos
usuani 2 7,801 Último mensaje 16 Febrero 2010, 15:17 pm
por usuani
Recomendación tipo de dato
Bases de Datos
novalida 2 3,183 Último mensaje 4 Diciembre 2010, 04:06 am
por [D4N93R]
Ayuda con dato tipo subtitulo, ¿cómo sería la función definir? gracias
Programación C/C++
comemelguevo 2 1,833 Último mensaje 7 Enero 2016, 23:30 pm
por DeIMachine
Tipo de dato bool
Programación C/C++
AlbertoBSD 4 2,839 Último mensaje 18 Junio 2016, 16:58 pm
por AlbertoBSD
Como detecto el tipo de dato introducido en la llamada de una funcion?
Programación C/C++
@XSStringManolo 5 2,054 Último mensaje 9 Junio 2019, 06:48 am
por @XSStringManolo
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines