Operador sizeof
rolanesco23 de Mayo de 2013
577 Palabras (3 Páginas)355 Visitas
Operador sizeof
El operador sizeof informa del tamaño de almacenamiento utilizado por cualquier objeto, sea un tipo básico o derivado.
Sintaxis
El operador unitario sizeof tiene dos formas posibles de sintaxis:
sizeof expresión-unitaria
sizeof (nombre-de-tipo)
Observe que a pesar del aspecto de la segunda forma de sintaxis, se trata de un operador, no de una función. sizeof representa una forma cómoda de obtener información sobre el tamaño de los tipos básicos.
Resultado
Cualquiera que sea la forma de sintaxis empleada, el resultado es una constante entera de tipo size_t, con el espacio de memoria (bytes) usada por el operando. Con algunas excepciones, este tamaño es determinado por el tipo de operando, y para cada tipo, depende de la implementación. Es decir, no está predeterminado por el Estándar sino por el compilador utilizado
Ejemplo
#include <iostream.h>
int main(void) { // ===============
long double ld;
class C { public: float x; float y; } c;
cout<< "Tamaño de ld: " <<sizeofld<<endl;
cout<< "Tamaño de C: " <<sizeof c <<endl;
cout<< "Long double = " <<sizeof(long double) << " Bytes" <<endl;
return 0;
}
Salida:
Tamaño de ld: 10
Tamaño de C: 8
Long double = 10 Bytes
Comentario
Cuando se utiliza con instancias de tipos [3] se usa la primera forma de la sintaxis; tanto si se trata de tipos básicos (caso de ld en el ejemplo), como si son tipos definidos por el usuario (caso de C). Cuando se utiliza con especificadores de tipo básicos, se utiliza la segunda, con paréntesis (caso de longdouble).
En el ejemplo que sigue se muestra claramente los criterios de uso de una y otra forma de sintaxis:
#include <iostream.h>
int main(void) { // ===============
int i;
char ch;
class Cl { long double ld; int i; } c;
structEs { long double ld; int i; } e;
enum En { UNO } u;
cout<< "Tipo-int == " <<sizeof(int) <<endl;
cout<< "Tipo-char == " <<sizeof(char) <<endl;
cout<< "Tipo-ClaseCl == " <<sizeof(Cl) <<endl;
cout<< "Tipo-Estr. Es == " <<sizeof(Es) <<endl;
cout<< "Tipo-Enum En == " <<sizeof(En) <<endl;
cout<< "Objeto-int i == " <<sizeof i <<endl;
cout<< "Objeto-char ch == " <<sizeof c <<endl;
cout<< "Objeto-Clase c == " <<sizeof c <<endl;
cout<< "Objeto-Estr e == " <<sizeof e <<endl;
cout<< "Objeto-Enum u == " <<sizeof u <<endl;
return 0;
}
Salida:
Tipo-int == 4
Tipo-char == 1
Tipo-Clase Cl == 16
Tipo-Estr. Es == 16
Tipo-Enum En == 4
Objeto-int i == 4
Objeto-char ch == 16
Objeto-Clase c == 16
Objeto-Estr e == 16
Objeto-Enum u == 4
Compruebe la salida del ejemplo siguiente con la información suministrada en la documentación del compilador
#include <iostream.h>
void main(void) { // ===============
cout<< " Unsigned char == " <<sizeof(unsigned char) <<endl;
cout<< " Signed char == " <<sizeof(signed char) <<endl;
cout<< " Signed short == " <<sizeof(short) <<endl;
cout<< "Unsigned short == " <<sizeof(unsigned
...