[C con Clase] Normas notación (sufijos) [DUDA]

Narcis Garcia - GiLUG informatica en actiu.net
Mie Ago 26 11:22:41 CEST 2009


Yo pongo todos los sufijos de tipo a todo para ahorrar trabajo de 
"deducción" al compilador.
Si declaras una variable, le das espacio de memoria Long.
Al asignarle un valor constante a la variable, estás declarando una 
constante la cual será copiada a la variable.

En/na Steven Davidson ha escrit:
> Hola Daniel,
> 
> Rido wrote:
>> Bueno este es mi primer mensaje. Gracias al creador de la web por tan
> 
> Muchas gracias. Hacemos lo que podemos :)
> 
>> magnífica idea. Paso a postear mi duda, que supongo que para vosotros
>> será algo bastante fácil.
>>
> 
> Veamos las dudas.
> 
>> Veréis, a la hora de las normas de notación, se dice que las
>> variables constantes hay que expresarlas correctamente para no tener
>> errores. Por ejemplo si es una variable constante long, ponerla con
>> el sufijo "L". Eso lo entiendo porn ejemplo en la segunda línea del
>> siguiente código:
>>
>> long x = 123L;
>> if(x == 0L) cout << "Valor nulo" << endl;
>>
>> No obstante, en la primera línea del código anterior, la variable
>> está definida como long ya de por sí, así que no veo por qué hace
>> falta ponerle un sufijo "L" si ya estaba definida como long.
>>
> 
> Ciertamente, podríamos dispensar del sufijo en este caso, porque el 
> compilador promocionará los tipos de los valores para que concuerden con 
> la semántica de la operación. En este caso, el compilador quiere 
> encontrarse con la siguiente operación:
> 
> <long int> == <long int>
> 
> Al encontrarse con la siguiente expresión,
> 
> x == 0
> 
> el compilador cambiará el tipo de 0 para que concuerde con el tipo 
> esperado.
> 
> Indicamos el tipo con el sufijo para dar mayor claridad de lo que 
> queremos tanto para nosotros como para el compilador.
> 
> No sé si habrás llegado a ver la sobrecarga (u homonimia) de las 
> funciones y de los operadores, pero en C++ podemos tener diferentes 
> "versiones" de función con el mismo nombre. Por ejemplo,
> 
> void func( long int a );
> void func( int a );
> void func( short int a );
> 
> Si hiciéramos lo siguiente,
> 
> func( 5 );
> 
> Acabaríamos invocando la versión 'func(int)'. En este otro ejemplo, la 
> invocación será diferente, debido al tipo del dato pasado por parámetro:
> 
> func( 5L );
> 
> Se invocaría 'func(long int)'.
> 
> Como puedes ver, podemos hacer cosas diferentes dependiendo del tipo, 
> por lo que es sumamente importante indicar el tipo del dato a pasar. Si 
> no es necesario indicarlo explícitamente, al menos lo hacemos por la 
> legibilidad del programa.
> 
>> Como segunda duda, tengo el por qué el "endl;" termina en una l y no
>> simplemente en "end;"
>>
>> Quizá me salte algo que se haya leído anteriormente, pero no recuerdo
>> nada parecido :-S
>>
> 
> 'endl' es un manipulador estándar en <ostream> que significa en inglés 
> "end of line", para terminar una línea. Existe otro manipulador estándar 
> llamado 'ends', también en <ostream>, que significa "end of string", 
> para terminar una cadena.
> 
> 
> Espero haber aclarado las dudas.
> 
> Steven
> 
> 
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ




Más información sobre la lista de distribución Cconclase