UTNianos

Versión completa: [SSL] Final 2010
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
1.2 -> double (o sea real sin sufijo)
1.2L |1.2l -> long double (o sea real con sufijo uno de l L )
1.2F | 1.2f -> float (o sea real con sufijo uno de f F )
14L | 14l | 12345678L -> long int (o sea entero con sufijo uno de l L )
14 -> int (o sea entero sin sufijo)

Ahora no se me ocurre ningun ejemplo, estoy muy quemado pero creanme que hay casos en los que realmente sirven los sufijos.
(16-02-2011 00:32)repuken2 escribió: [ -> ]1.2 -> double (o sea real sin sufijo)
1.2L |1.2l -> long double (o sea real con sufijo uno de l L )
1.2F | 1.2f -> float (o sea real con sufijo uno de f F )
14L | 14l | 12345678L -> long int (o sea entero con sufijo uno de l L )
14 -> int (o sea entero sin sufijo)

Ahora no se me ocurre ningun ejemplo, estoy muy quemado pero creanme que hay casos en los que realmente sirven los sufijos.

claro..el tema es que estaria bueno ver un ejemplo de para que se usa esa notacion....??
(15-02-2011 23:59)Ricitos escribió: [ -> ]Ahora,tengo una duda si tuviese 12345678L lo definimos como long int no?
O sea que si no tiene el sufijo L es solo int
Gracias !

Es mas fácil si tenés en cuenta el rango.

-Int va de -32768 a 32767
-Unsigned int va de 0 a 65537
-Long usa 4 bytes por lo que el rango va de -2000000 a 2000000 (aproximadamente)

En este caso no hace falta poner el sufijo L, ya con ese valor sí o sí es long.
(16-02-2011 00:32)repuken2 escribió: [ -> ]1.2L |1.2l -> long double (o sea real con sufijo uno de l L )

1.2L no puede ser. Si miran la BNF van a ver que nunca la constante entera lleva punto, sólo las float. No puede ser ni int, ni long, ni long double.


Cita:1.2F | 1.2f -> float (o sea real con sufijo uno de f F )
14L | 14l | 12345678L -> long int (o sea entero con sufijo uno de l L )
14 -> int (o sea entero sin sufijo)

Ahora no se me ocurre ningun ejemplo, estoy muy quemado pero creanme que hay casos en los que realmente sirven los sufijos.

Estos 3 están todos bien. Qué ejemplo no se te ocurre?
El sufijo sirve para diferenciar cuanta memoria va a usar una determinada variable.
Float por ejemplo usa 4 bytes y double usa 8; si no se especifica claramente todas las variables con el sufijo f ó F, de cajón usará 8 bytes en todas, y mas adelante cuando hagas programas avanzados en C vas a ver que el tema de ahorro de memoria va a ser en muchos casos muy importante.
(16-02-2011 01:10)Maxter escribió: [ -> ]
(16-02-2011 00:32)repuken2 escribió: [ -> ]1.2L |1.2l -> long double (o sea real con sufijo uno de l L )

1.2L no puede ser. Si miran la BNF van a ver que nunca la constante entera lleva punto, sólo las float. No puede ser ni int, ni long, ni long double.

1.2 es una constante real.
Volumen 1, pagina 70
(16-02-2011 01:10)Maxter escribió: [ -> ]
(15-02-2011 23:59)Ricitos escribió: [ -> ]Ahora,tengo una duda si tuviese 12345678L lo definimos como long int no?
O sea que si no tiene el sufijo L es solo int
Gracias !

Es mas fácil si tenés en cuenta el rango.

-Int va de -32768 a 32767
-Unsigned int va de 0 a 65537
-Long usa 4 bytes por lo que el rango va de -2000000 a 2000000 (aproximadamente)

En este caso no hace falta poner el sufijo L, ya con ese valor sí o sí es long.
(16-02-2011 00:32)repuken2 escribió: [ -> ]1.2L |1.2l -> long double (o sea real con sufijo uno de l L )

1.2L no puede ser. Si miran la BNF van a ver que nunca la constante entera lleva punto, sólo las float. No puede ser ni int, ni long, ni long double.


Cita:1.2F | 1.2f -> float (o sea real con sufijo uno de f F )
14L | 14l | 12345678L -> long int (o sea entero con sufijo uno de l L )
14 -> int (o sea entero sin sufijo)

Ahora no se me ocurre ningun ejemplo, estoy muy quemado pero creanme que hay casos en los que realmente sirven los sufijos.

Estos 3 están todos bien. Qué ejemplo no se te ocurre?
El sufijo sirve para diferenciar cuanta memoria va a usar una determinada variable.
Float por ejemplo usa 4 bytes y double usa 8; si no se especifica claramente todas las variables con el sufijo f ó F, de cajón usará 8 bytes en todas, y mas adelante cuando hagas programas avanzados en C vas a ver que el tema de ahorro de memoria va a ser en muchos casos muy importante.

Pero si hago esto : float a = 1.2 acaso ya no reserve solo 4 bytes para la variable a ?
para que preciso usar sufijo?? no veo en que casos preciso usarlos......
(16-02-2011 10:04)fegaci escribió: [ -> ]Pero si hago esto : float a = 1.2 acaso ya no reserve solo 4 bytes para la variable a ?
para que preciso usar sufijo?? no veo en que casos preciso usarlos......

Si es verdad, las variables quedan perfectamente definidas.
El problema está cuando se trabaja con constantes.
Si en una expresión tenés una combinación de constantes y/o variables de diferentes tipos, el compilador lo que hace es convertir todos los operandos al mismo tipo de acuerdo al rango de mayor a menor.
Ejemplos:
float + int --> se convierte la variable int a float
double + float --> Se convierte el float a double
char + long double --> el char se convierte a long double... y así

Entonces si tenemos

int a;
a=a*1.2; // a se convierte a double (8 bytes)

en cambio:

int a;
a=a*1.2f //a se convierte a float (4 bytes)
(16-02-2011 11:12)Maxter escribió: [ -> ]
(16-02-2011 10:04)fegaci escribió: [ -> ]Pero si hago esto : float a = 1.2 acaso ya no reserve solo 4 bytes para la variable a ?
para que preciso usar sufijo?? no veo en que casos preciso usarlos......

Si es verdad, las variables quedan perfectamente definidas.
El problema está cuando se trabaja con constantes.
Si en una expresión tenés una combinación de constantes y/o variables de diferentes tipos, el compilador lo que hace es convertir todos los operandos al mismo tipo de acuerdo al rango de mayor a menor.
Ejemplos:
float + int --> se convierte la variable int a float
double + float --> Se convierte el float a double
char + long double --> el char se convierte a long double... y así

Entonces si tenemos

int a;
a=a*1.2; // a se convierte a double (8 bytes)

en cambio:

int a;
a=a*1.2f //a se convierte a float (4 bytes)

ok.. gracias por el ejemplo Maxter.. cuando puedas me responderias el Mensaje Personal que te mande? gracias de verdad
Gracias a todos por sus aportes !
Me re sirvieron!
Gente dos consultas/pedidos:

1) Alguien tiene el final del 27/12/2010 ? , creo que es esa fecha, que tiene 1 ejercicio del sacar el conjunto siguiente y uno de maquina de turing.

2)Alguien tiene acceso al grupo yahoo ? Para ver que material hay disponible, finales, ejs. resueltos ? (yo curse en 2008, si estaba anotado en su momento pero vaya a saber donde quedo todo eso...)

Gracias!
fijate que el otro dia un chico subio los finales de diciembre
Aca esta el link

http://www.utnianos.com.ar/foro/showthread.php?tid=689

Yo tengo acceso al grupo yahoo, pero no hay parciales ni finales ni nada...
Solo esta la modalidad del final,como se evalua,puntajes y un par de enunciados de tps practicos,nada mas.
Genial, me viene al pelo,
muchisimas gracias!
Una consulta un poco OFFTOPIC. ¿Sigue vigente la practica de poder "levantarse" a los 10 minutos, o lo cambiaron?
Muchas gracias
(17-02-2011 23:42)Ident escribió: [ -> ]Una consulta un poco OFFTOPIC. ¿Sigue vigente la practica de poder "levantarse" a los 10 minutos, o lo cambiaron?
Muchas gracias

Si. Durante los primeros 15 minutos podés decidir irte y tener ausente.
Estaba mirando el final del 27/12/2010 y veo algo raro en la resolucion:

Ejercicio 3: Sea int a,b,x; Según la sintaxis de ANSI C, por cada uno de los siguientes constructos indique si es expresión, Declaración, Sentencia o error ( para el compilador):

a,b,&x==*x

en la resolucion dice que es sentencia...

pero no es error querer hacer *x tal que x es un int ?
Si alguien va mañana seria tan amable de hacer una copia del final, y escanearla o sacarle foto y subirla ?

GRACIAS
Páginas: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
URLs de referencia