En C++11, el operador alignof solía devolver la alineación, en bytes del tipo especificado.
Sintaxis:
alignof(type)
Explicación de sintaxis:
- alignof: el operador devuelve la alineación en bytes, requerida para instancias de tipo, cuyo tipo es tipo completo, tipo de array o tipo de referencia.
- tipo de array: se devuelve el requisito de alineación del tipo de elemento.
- tipo de referencia: el operador devuelve la alineación del tipo referenciado.
Valor devuelto: el operador alignof se usa normalmente para devolver un valor de tipo std::size_t .
Programa:
// C++ program to demonstrate alignof operator #include <iostream> using namespace std; struct Geeks { int i; float f; char s; }; struct Empty { }; // driver code int main() { cout << "Alignment of char: " << alignof(char) << endl; cout << "Alignment of pointer: " << alignof(int*) << endl; cout << "Alignment of float: " << alignof(float) << endl; cout << "Alignment of class Geeks: " << alignof(Geeks) << endl; cout << "Alignment of Empty class: " << alignof(Empty) << endl; return 0; }
Producción:
Alignment of char: 1 Alignment of pointer: 8 Alignment of float: 4 Alignment of class Geeks: 4 Alignment of Empty class: 1
alignof vs sizeof:
El valor de alignof es el mismo que el valor de sizeof para tipos básicos. Considere, este ejemplo:
typedef struct { int a; double b; } S; // alignof(S) == 8
En el caso anterior, el valor alignof es el requisito de alineación del elemento más grande de la estructura.
Programa de ejemplo para demostrar la diferencia entre alignof y sizeof:
// C++ program to demonstrate // alignof vs sizeof operator #include <iostream> using namespace std; struct Geeks { int i; float f; char s; }; int main() { cout << "alignment of Geeks : " << alignof(Geeks) << '\n'; cout << "sizeof of Geeks : " << sizeof(Geeks) << '\n'; cout << "alignment of int : " << alignof(int) << '\n'; cout << "sizeof of int : " << sizeof(int) << '\n'; }
Producción:
alignment of Geeks : 4 sizeof of Geeks : 12 alignment of int : 4 sizeof of int : 4
Publicación traducida automáticamente
Artículo escrito por rajasethupathi y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA