two rango randomize numeros number generar funcion decimales arreglo and aleatorios c++ c struct sizeof

c++ - rango - randomize en c



El tamaño de la estructura vacía es 0 en C y 1 en C++ ¿por qué? (3)

Aquí hay un maravilloso artículo que describe por qué ocurre esto, y más pertinentemente, una forma (segura) de hacerlo :)

http://www.cantrip.org/emptyopt.html

Posibles duplicados:
Clase vacía en C ++
¿Cuál es el tamaño de una estructura vacía en C?

Leí en alguna parte que el tamaño de una estructura vacía en C ++ es 1. Así que pensé en verificarlo. Desafortunadamente lo guardé como un archivo C y usé el encabezado <stdio.h> y me sorprendió ver el resultado. Fue 0.

Eso significa

struct Empty { }; int main(void) { printf("%d",(int)sizeof(Empty)); }

estaba imprimiendo 0 cuando se compiló como un archivo C y 1 cuando se compiló como un archivo C ++. Quiero saber el motivo. Leí que el tamaño de la estructura vacía en c ++ no es cero porque si el tamaño fuera 0 dos objetos de la clase tendrían la misma dirección que no es posible. ¿Dónde estoy equivocado?



No puede tener una estructura vacía en C. Es una violación de restricción sintáctica. Sin embargo, gcc permite una estructura vacía en C como una extensión . Además, el comportamiento no está definido si la estructura no tiene ningún miembro nombrado porque

C99 dice:

Si struct-declaration-list no contiene miembros con nombre, el comportamiento no está definido.

Asi que

struct Empty {}; //constraint violation struct Empty {int :0 ;}; //no named member, the behaviour is undefined.

Y sí el tamaño de una estructura vacía es C ++ no puede ser cero :)