[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: ¿Que se suele usar mas: int o char?



El día 26 de diciembre de 2014, 8:37, Altair Linux
<altairlinux@gmail.com> escribió:
> Hola,
>
> estoy con unas cosas de un proyecto que, espero, finalizare pronto y
> me sale una duda sobre la programacion de C/C++ en Linux en general y
> en Debian en particular, porque estoy programando esto desde Debian.
>
> ¿Que se suele preferir como parametro en una funcion: int o char?.
> ¿Y como valor de retorno: int o char?
>
> Teniendo en cuenta que tanto los parametros como los valores de
> retorno son siempre numeros, y que generalmente (hay alguna que otra
> excepcion) los valores van del 0 al 100, en principio es suficiente
> con un char.
>
> Sin embargo, por lo que he visto de otros proyectos se usa int aunque
> por el valor del numero no se suela usar.
>
> Uno de los motivos que se me ocurre es que se use tanto para dejar
> claro que parametro o el valor de retorno es un numero y no parezca
> que puede ser un caracter.
>
> ¿Opiniones?
>
>
> --
> To UNSUBSCRIBE, email to debian-user-spanish-REQUEST@lists.debian.org
> with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
> Archive: https://lists.debian.org/CA+HdPfLMKnNH5gtDziaW5CZvJXwkCi93R2gqGmT37oiijsPw@mail.gmail.com
>

(Lo reenvío porque no me di cuenta y lo envié a tu mail y no a la lista)

Antes de usar "char" te podría recomendar usar el tipo "short", que te
utiliza 2 bytes y si no me confundo va desde -32768 hasta +32767. No
usa mucho mas: como dije "short" usa 2 bytes y "char" usa 1 byte.

Pero en el caso de que no quieras gastar esa memoria, podes usar
"char". Pero con unas condiciones antes.

Tenés mucha razón cuando decís de que "hay que dejar en claro que el
parámetro o el valor de retorno es un número y no parezca que pueda
ser un carácter". Si directamente pones "char" al escribir tu programa
cuando quieres representar números, el día que quieras modificarlo te
va a resultar muy difícil de entenderlo. Además el programa va a estar
lleno de comentarios indicando de que eso es en realidad un número y
no un carácter. Y cuando un programa empieza a tener tipos de
comentarios indicando su funcionamiento, es que lo estas haciendo mal.
Entonces lo que te recomiendo usar es "typedef".

Lo que vas a hacer es poner "typedef char shortest". "shortest" es el
nuevo tipo de dato (Aunque si querés podes ponerle cualquier otro
nombre, como "mini", "mini_int", etc. Aunque te recomendaría un nombre
que sea representativo -No le vas a poner de nombre "tipo_dato", ya
que no indica mucho con su nombre-). Entonces cuando hagas una
declaración de datos

shortest funcion(int a, shortest b)

en realidad sería exactamente igual a

char funcion(int a, char b)

pero en el primer caso, es mucho más claro de que estas usando un
número y no un caracter. Repito, tanto "shortest" como "char" usa un
byte (es decir, un "shortest" es exactamente igual que un "char"). Si
lo quieres pensar de otra forma, es como si usaras una constante, y en
todos los lugares donde parezca "shortest" cuando se compile va a
aparecer "char" (En realidad no funciona así, pero podes pensarlo de
esa manera tranquilamente.). Obviamente este tipo de datos no se
limita sólo en la declaración de los parámetros, sino en la
declaración de una variable en cualquier tipo de lugar.

Otra ventaja de ésto es que, si en un futuro te quedas corto con la
amplitud de rangos de "char", podes modificarlo en un sólo lado para
darle mas rango (y ponerle un "short" por ejemplo).

Si vamos un poco más lejos, los puristas de objetos dicen que
directamente no tienen que existir los tipos primitivo de datos (como
int, float, etc) sino que deberían existir todos objetos, cosa de que
si en un futuro el tipo de dato cambia, solo se tenga que realizar las
modificaciones en una sola parte (En la estructura y/o comportamiento
de la clase). Usando typdef no es como usar objetos, aunque como te
dije anteriormente, te va a permitir realizar las modificaciones en un
solo lugar (Y así evitarás muchos errores imperceptibles).

Si quieres buscar más información sobre typedef te recomiendo
http://en.wikipedia.org/wiki/Typedef (Está bastante simple y
completo). Sino pones en un buscador y listo.

Saludos.


Reply to: