Duda sobre el tipo de datos que pude almacenar una variable

Iniciado por Aikanáro Anário, 26 Mayo 2010, 22:17 PM

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

Aikanáro Anário

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:

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:
int short unsigned x=1;

En la respuesta a ese ejercicio esta:
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
Lo que faltaba en internet: http://binar10s.blogspot.com/

08l00D

Cita de: Aikanáro Anário en 26 Mayo 2010, 22:17 PM
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:
int short unsigned x=1;

En la respuesta a ese ejercicio esta:
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:
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...

Aikanáro Anário

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:
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
Lo que faltaba en internet: http://binar10s.blogspot.com/

08l00D

Cita de: 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:
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:

x=1;

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....

Aikanáro Anário

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"
Lo que faltaba en internet: http://binar10s.blogspot.com/

satu

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
Breakbeat como forma de vida

Aikanáro Anário

Lo que faltaba en internet: http://binar10s.blogspot.com/