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

Steven Davidson srd4121 en njit.edu
Jue Mayo 3 03:17:22 CEST 2012


Hola User,

On 5/2/2012 5:04 PM, User wrote:
> 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
>

Casi. El operador es <=; esto es,

short int <= int <= long int <= long long int

Y de hecho, tenemos más bien esto:

char <= wchar_t <= short int <= int <= long int <= long long int

donde 'char' ES 1 byte.

> 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.
>

Creo que estás confundiendo estos vocablos de 'short', 'long', y 'long 
long'. No son diferentes tipos de enteros, sino que se pueden usar 
implícitamente con 'int'. Esto es,

short n;

es igual que:

short int n;

Asimismo,

long n;

es igual que:

long int n;

y,

long long n;

es igual que:

long long int n;

Lo mismo sucede con las "versiones" de 'unsigned'.

Si te fijas en la sintaxis en el curso, verás que 'int' en estos casos 
es optativo:

[signed|unsigned] [short|long] int 
<identificador>[,<identificador2>[,<identificador3>]...];

[signed|unsigned] long [int] 
<identificador>[,<identificador2>[,<identificador3>]...];
[signed|unsigned] short [int] 
<identificador>[,<identificador2>[,<identificador3>]...];
[signed|unsigned] long long [int] 
<identificador>[,<identificador2>[,<identificador3>]...];

Si escribes 'long', entonces no es necesario escribir 'int' 
posteriormente, ya que en este caso es implícito; y lo mismo sucede con 
'short' y 'long long'.


Espero haber aclarado la duda.

Steven





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