Гарантируется ли нулевая инициализация структур, чтобы стереть заполненные области?

Предположим, у меня есть следующая структура:

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

Первые 3 бита можно будет использовать, ноsizeof(mytype) вернусь4 что означает 29 бит отступов. Мой вопрос заключается в том, гарантируют ли эти биты-заполнители по стандарту, что они инициализируются нулем с помощью оператора:

mytype testfields = {0};

или же:

mytype myfields = {1, 1, 1};

Так что безопасно выполнить следующееmemcmp() при условии, что биты 4..29 будут равны нулю и, следовательно, не будут влиять на сравнение:

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

Ответы на вопрос(3)

Ваш ответ на вопрос