Operador sizeof
Enviado por rolanesco • 23 de Mayo de 2013 • 577 Palabras (3 Páginas) • 332 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;
...