Tamanho da estrutura dada

struct x { char a : 1; // statement 1 char c : 3; // statement 2 }; 

qual será o tamanho se esta estrutura. Qual é o significado da afirmação 1 e 2?

Essas declarações declaram campos de bits .
Significa a memory ocupada de 1 bit e c ocupa uma memory de 3 bits.

O tamanho da estrutura será:
Pelo menos 4 bits + preenchimento (bits)

E o mais provável, será 8 bits ou seja: 1 byte

Porque,
Se uma série de campos de bits não for adicionada ao tamanho de um int, o preenchimento poderá ocorrer. A quantidade de preenchimento é determinada pelas características de alinhamento dos membros da estrutura.

O que são campos de bits?
Da documentação da IBM:

C e C ++ permitem que membros inteiros sejam armazenados em espaços de memory menores do que o compilador normalmente permitiria. Esses membros da estrutura que economizam espaço são chamados de campos de bits e sua largura em bits pode ser explicitamente declarada. Os campos de bits são usados ​​em programas que devem obrigar uma estrutura de dados a corresponder a uma representação de hardware fixa e provavelmente não serão portáteis.

A syntax para declarar um campo de bits é a seguinte:

>> – type_specifier – + ———— + -: – constant_expression -; —> <'-declarador-'

Uma declaração de campo bit contém um especificador de tipo seguido por um declarator opcional, dois-pontos, uma expressão de número inteiro constante que indica a largura do campo em bits e um ponto-e-vírgula. Uma declaração de campo de bits não pode usar nenhum dos qualificadores de tipo, const ou volátil.