¿Se garantiza una inicialización cero de las estructuras para limpiar las áreas acolchadas?

Supongamos que tengo la siguiente estructura:

typedef struct
{
    unsigned field1 :1;
    unsigned field2 :1;
    unsigned field3 :1;
} mytype;

Los primeros 3 bits serán utilizables perosizeof(mytype) volverá4 lo que significa 29 bits de relleno. Mi pregunta es, ¿estos bits de relleno garantizados por el estándar se inicializan a cero por la declaración:

mytype testfields = {0};

o:

mytype myfields = {1, 1, 1};

De tal manera que es seguro realizar lo siguientememcmp() en el supuesto de que los bits 4..29 serán cero y, por lo tanto, no afectarán la comparación:

if ( memcmp(&myfields, &testfields, sizeof(myfields)) == 0 )
    printf("Fields have no bits set\n");
else
    printf("Fields have bits set\n");

Respuestas a la pregunta(3)

Su respuesta a la pregunta