The following code produces a segmentation fault upon assignment to a union member. This must be a result of misunderstanding unions, but I cannot pinpoint my error.