Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Aikanáro Anário en 26 Mayo 2010, 22:17 pm



Título: Duda sobre el tipo de datos que pude almacenar una variable
Publicado por: Aikanáro Anário en 26 Mayo 2010, 22:17 pm
Estoy aprendiendo a programar en C con los manuales que hay en la pagina elhacker.net.
Como ya saben %f se usa para especificar que la variable va a contener un valor decimal (por ahora este es el unico uso que conozco), entonces:

Código:
float x=0
scanf("%f", &x);

Suponiendo que por teclado se introduzca el numero 11, No deberia de dar un error?

Me explico, si float y %f son para decimales y 11 no es un decimal entonces esta mal o no?


Otra cosa. Si en un ejercicio me piden declarar una variable entera, corta y sin signo. Seria:
Código:
int short unsigned x=1;

En la respuesta a ese ejercicio esta:
Código:
unsigned short int buenas;

Se supone que si me piden un entero debe ser un numero entero, no varios caracteres como la palabra "buenas"

Y una ultima cosa. Si a una variable se declara como long o short, ej.: int long x=5; ó int short y=0, quiere decir que esa variable solo podra almacenar 16 o 32 caracteres o letras respectivamente?. Solo para estar claros.

Y gracias


Título: Re: Duda sobre el tipo de datos que pude almacenar una variable
Publicado por: 08l00D en 26 Mayo 2010, 22:54 pm
Código:
float x=0
scanf("%f", &x);

Suponiendo que por teclado se introduzca el numero 11, No deberia de dar un error?

Me explico, si float y %f son para decimales y 11 no es un decimal entonces esta mal o no?
No da error porque la funcion realiza una conversion implicita (o automatica) ... al dato ingresado para que sea compatible con el tipo de la variable si ingresas 11 se transformara en 11.000000 para llenar el espacio reservado pora la variable x.

Citar
Otra cosa. Si en un ejercicio me piden declarar una variable entera, corta y sin signo. Seria:
Código:
int short unsigned x=1;

En la respuesta a ese ejercicio esta:
Código:
unsigned short int buenas;

Se supone que si me piden un entero debe ser un numero entero, no varios caracteres como la palabra "buenas"
Los dos codigos que pusiste declaran una variable entera, corta y sin signo la diferencia esta en que en:
Código:
int short unsigned x=1;
se inicializa la variable declarada, es decir, vendria a ser una definicion de variable.
Declarar una variable es definir un identificador(un nombre) para un determinado tipo de dato y reservando un espacio en memoria para ella, que podes inicializar(asignar un valor) junto con la declaracion o despues...
Citar
Y una ultima cosa. Si a una variable se declara como long o short, ej.: int long x=5; ó int short y=0, quiere decir que esa variable solo podra almacenar 16 o 32 caracteres o letras respectivamente?. Solo para estar claros.
La amplitud del tipo de datos depende de la implantacion ya que no se encuentra definido en el estandar...


Título: Re: Duda sobre el tipo de datos que pude almacenar una variable
Publicado por: Aikanáro Anário en 27 Mayo 2010, 01:18 am
La primera parte comprendi bien.

Citar
Los dos codigos que pusiste declaran una variable entera, corta y sin signo la diferencia esta en que en:
Código:
int short unsigned x=1;
se inicializa la variable declarada, es decir, vendria a ser una definicion de variable.
Declarar una variable es definir un identificador(un nombre) para un determinado tipo de dato y reservando un espacio en memoria para ella, que podes inicializar(asignar un valor) junto con la declaracion o despues...

A ver si he entendido...
O sea que cuando hago x=1 ya no puedo inicializarla con otro valor, ¿hay estaria declarando e inicializando al mismo tiempo?
Pero cuando declaro "buenas" lo que hago es reservar el espacio en la memoria con ese nombre y mas tarde si lo podra ocupar otro valor que se entre por teclado


Título: Re: Duda sobre el tipo de datos que pude almacenar una variable
Publicado por: 08l00D en 27 Mayo 2010, 01:32 am
La primera parte comprendi bien.

Citar
Los dos codigos que pusiste declaran una variable entera, corta y sin signo la diferencia esta en que en:
Código:
int short unsigned x=1;
se inicializa la variable declarada, es decir, vendria a ser una definicion de variable.
Declarar una variable es definir un identificador(un nombre) para un determinado tipo de dato y reservando un espacio en memoria para ella, que podes inicializar(asignar un valor) junto con la declaracion o despues...

A ver si he entendido...
O sea que cuando hago x=1 ya no puedo inicializarla con otro valor, ¿hay estaria declarando e inicializando al mismo tiempo?
Pero cuando declaro "buenas" lo que hago es reservar el espacio en la memoria con ese nombre y mas tarde si lo podra ocupar otro valor que se entre por teclado
No, no...
inicializar la variable lo podes hacer en la declaracion o despues ... pero no significa que queda ese valor fijo ... por eso se le llama variable ... si queres asignarle otro valor con:
Código
  1. x=1;
  2.  
es totalmente valido...
tanto a la variable "buenas" como "x" podes cambiarle el valor despues de haberle asignado uno...
cuando el valor se mantine inmutable es cuando agregas el calificador "const".... pero no viene al caso....


Título: Re: Duda sobre el tipo de datos que pude almacenar una variable
Publicado por: Aikanáro Anário en 27 Mayo 2010, 04:59 am
OK

Pero si piden declarar una variable entera, ¿no seria un numero?, un numero entero?, en vez de letras. Si fuera para letras o caracteres usariamos "char"


Título: Re: Duda sobre el tipo de datos que pude almacenar una variable
Publicado por: satu en 27 Mayo 2010, 15:55 pm
Pero el nombre de la variable no importa, si te creas una variable de tipo int, tú la puedes llamar "x" o "buenas" o como tú quieras, lo importante es el contenido


Título: Re: Duda sobre el tipo de datos que pude almacenar una variable
Publicado por: Aikanáro Anário en 27 Mayo 2010, 18:26 pm
Ok, totalemente claro ya.

Gracias