Autor
|
Tema: Tipo de Dato Unsigned. (Leído 1,524 veces)
|
FKT
Desconectado
Mensajes: 221
|
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: #include <stdio.h> #include <stdlib.h> int main(){ printf("Introduce dos enteros para hacer la suma:\n") int a, b, suma; printf("Introduce un numero para la suma:\n"); printf("Introduce el segundo numero:\n"); suma = a + b; printf("La suma de los dos enteros es: %i ",suma ); 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
Mensajes: 3.411
ASMático
|
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
Mensajes: 87
|
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
Mensajes: 3.411
ASMático
|
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: 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: diferencia = max(nivel1,nivel2) - min(nivel1,nivel2);
Que ya es más rodeo.
|
|
|
En línea
|
|
|
|
FKT
Desconectado
Mensajes: 221
|
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
Mensajes: 87
|
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: 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: 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
|
|
|
|
|
|