[C con Clase] Sobre el punto 'Tipos de variables I' del curso

User usuarioanonimomysql en gmail.com
Mie Mayo 2 23:04:52 CEST 2012


Más dudas,

El el capítulo pone: "podemos estar seguros de que el tamaño de un short
int es menor o igual que el de un int, y éste a su vez es menor o igual que
el de un long int" y también sobre long long [int] pone "Como en los otros
casos, su tamaño no está definido, pero sí sabemos que será mayor o igual
que el de long int"

De esto deduzco lo siguiente:

short int < int < long int < long long int

Pero no me queda claro entre qué tipo y qué tipo entran los tipos short,
long y long long, todos ellos sin llevar un int después, y tampoco se qué
diferencia hay entre estos y los que llevan un int después.

Saludos.

El 2 de mayo de 2012 11:08, User <usuarioanonimomysql en gmail.com> escribió:

> Hola,
>
> Gracias por las aclaraciones, el caso es que veo que este tema ha perdido
> un poco de importancia con las nuevas arquitecturas de procesadores, si no
> me equivoco. Tal vez, en plataformas más cerradas esto tenga más sentido
> que en un PC moderno.
>
> Lo que voy a hacer es ver lo que ocupa cada tipo en mi platafora y en base
> a eso declaro el tipo que más se ajuste al intervalo válido de los enteros
> a tratar.
>
> Saludos.
>
> El 2 de mayo de 2012 01:57, Steven Davidson <srd4121 en njit.edu> escribió:
>
> Hola User,
>>
>>
>> On 5/1/2012 7:16 PM, User wrote:
>>
>>> Hola,
>>>
>>> Estoy dando un repaso a los temas del curso de C++ y llegado al punto
>>> de 'Tipos de variables I' hay cosas que no me quedan claras.
>>>
>>> Según la sintaxis expuesta en el punto, veo que se pueden declarar
>>> variables de tipo short int, long int, int, long, short, long long y
>>> long long int.
>>>
>>> No me queda claro en qué caso se debería usar una declaración u otra.
>>> He programado en C++ y si quiero trabajar con un número entero
>>> siempre acabo usando int.
>>>
>>> Me gustaría, si fuera posible, que pusieráis ejemplos concretos con
>>> cada uno de los casos y en qué "problemas" o tipo de "no
>>> optimización" se incurriría al usar un tipo que no se ajuste de
>>> manera fiel a los datos con los que vamos a trabajar.
>>>
>>> Si podéis responder a este correo con un adelanto de lo que pido
>>> estaría genial.
>>>
>>>
>> Bueno, como bien dices, uso 'int' cuando necesito un entero. El tipo
>> 'int' representa el entero con el que más cómodo se siente el procesador.
>> Lo que pasa es que hoy día usamos 'int' para 32 bits, aunque tengamos
>> plataformas de 64 bits, que se suele representar como 'long long int'. En
>> general, usamos 'int' para un entero cualquiera, pero si necesitamos o
>> sabemos de antemano el intervalo válido de los enteros a tratar, entonces
>> pasaríamos a usar 'short int' o 'long long int', cuando sean necesarios.
>>
>> Por ejemplo, para cronómetros de alta resolución, pasaríamos a usar un
>> entero de 64 bits y por tanto sería un 'unsigned long long int'. Si estamos
>> usando gráficos, por ahora, las dimensiones de una imagen son de la orden
>> de unos centenares o millares de píxeles para las filas y para las
>> columnas, como por ejemplo, 1024x768, 1440x900, 2048x2048, 4096x4096, etc..
>> Para este caso, usaríamos 'unsigned short int' porque no llegamos a los
>> 65536 de los 16 bits que suele ocupar 'unsigned short int'. Asimismo, en el
>> modelo RGB de colores, cada canal, rojo, verde, y azul, usan 8 bits cada
>> uno, por lo que individualmente se representarían con un 'unsigned char'.
>> También es cierto que hay otros modelos de RGB que usan 16 bits por cada
>> canal, así que entonces estaríamos ante un uso de 'unsigned short int'.
>>
>> En general, habría que mirar cada caso y si realmente nos sirve usar
>> 'short int' en lugar de 'int'. Hoy día, 'long int' ocupa lo mismo que
>> 'int', así que no es muy usado, excepto como indicativo de que queremos un
>> entero grande, aunque en la práctica estemos ante un entero "normal".
>>
>> Como no siempre sabremos exactamente el uso del entero, sugiero usar
>> tipos definidos, para que así podamos redefinirlos si las cosas no salen
>> bien. Por ejemplo,
>>
>> typedef unsigned long int dim_t;     // tipo de dimensión
>> typedef unsigned short int coord_t;  // tipo de coordenada
>> typedef unsigned char edad_t;        // tipo de edad
>> typedef long long int crono_t;       // tipo de cronómetro: pulsacions
>>
>>
>> Espero haber aclarado un poco el tema.
>>
>> Steven
>>
>>
>> ______________________________**_________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/**mailman/listinfo/cconclase_**
>> listas.conclase.net<http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net>
>> Bajas: http://listas.conclase.net/**index.php?gid=2&mnu=FAQ<http://listas.conclase.net/index.php?gid=2&mnu=FAQ>
>>
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20120502/8c044bbf/attachment.html>


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