#include <stdio.h>
 
volatile union{
    unsigned char Table_ALL[2];
    struct{
        union {
                unsigned char Byte ;
                struct {
                        unsigned char C1_1:1;
                        unsigned char C1_2:1;
                        unsigned char C1_3:1;
                        unsigned char C1_4:1;
                        unsigned char C1_5:1;
                        unsigned char C1_6:1;
                        unsigned char C1_7:1;
                        unsigned char C1_8:1;
                }BIT;
        } S1_C1;
 
        union {
                unsigned char Byte ;
                struct {
                        unsigned char C2_1:1;
                        unsigned char C2_2:1;
                        unsigned char C2_3:1;
                        unsigned char C2_4:1;
                        unsigned char C2_5:1;
                        unsigned char C2_6:1;
                        unsigned char C2_7:1;
                        unsigned char C2_8:1;
                }BIT;
        } S1_C2;
    }S1;
}Table;
 
 
int main(void) {
	// your code goes here
	printf("Table_ALL[0] = %d\n", Table.Table_ALL[0]);
	printf("Table_ALL[1] = %d\n", Table.Table_ALL[1]);
 
	printf("Write 1 to S1_C1.Byte\n");
	Table.S1.S1_C1.Byte = 1;
	printf("S1.S1_C1.Byte = %d\n", Table.S1.S1_C1.Byte);
	printf("S1.S1_C2.Byte = %d\n", Table.S1.S1_C2.Byte);
 
	printf("Table_ALL[0] = %d\n", Table.Table_ALL[0]);
	printf("Table_ALL[1] = %d\n", Table.Table_ALL[1]);
 
	printf("Write 2 to S1_C2.Byte\n");
	Table.S1.S1_C2.Byte = 2;
	printf("S1.S1_C1.Byte = %d\n", Table.S1.S1_C1.Byte);
	printf("S1.S1_C2.Byte = %d\n", Table.S1.S1_C2.Byte);
 
	printf("Table_ALL[0] = %d\n", Table.Table_ALL[0]);
	printf("Table_ALL[1] = %d\n", Table.Table_ALL[1]);
	return 0;
}