[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