▁▁ ▁Union ▁types ▁are ▁types ▁describing ▁values ▁that ▁belong ▁to ▁either ▁of ▁two ▁types . ▁For ▁example , ▁in ▁C , ▁the ▁signed ▁char ▁has ▁a ▁- 1 2 8 ▁to ▁ 1 2 7 ▁range , ▁and ▁the ▁unsigned ▁char ▁has ▁a ▁ 0 ▁to ▁ 2 5 5 ▁range , ▁so ▁the ▁union ▁of ▁these ▁two ▁types ▁would ▁have ▁an ▁overall ▁" virtual " ▁range ▁of ▁- 1 2 8 ▁to ▁ 2 5 5 ▁that ▁may ▁be ▁used ▁partially ▁depending ▁on ▁which ▁union ▁member ▁is ▁accessed . ▁Any ▁function ▁handling ▁this ▁union ▁type ▁would ▁have ▁to ▁deal ▁with ▁integers ▁in ▁this ▁complete ▁range . ▁More ▁generally , ▁the ▁only ▁valid ▁operations ▁on ▁a ▁union ▁type ▁are ▁operations ▁that ▁are ▁valid ▁on ▁both ▁types ▁being ▁union ed . ▁C ' s ▁" union " ▁concept ▁is ▁similar ▁to ▁union ▁types , ▁but ▁is ▁not ▁types a fe , ▁as ▁it ▁perm its ▁operations ▁that ▁are ▁valid ▁on ▁either ▁type , ▁rather ▁than ▁both . ▁Union ▁types ▁are ▁important ▁in ▁program ▁analysis , ▁where ▁they ▁are ▁used ▁to ▁represent ▁symbol ic ▁values ▁whose ▁exact ▁nature ▁( e . g ., ▁value ▁or ▁type ) ▁is ▁not ▁known . ▁ ▁In ▁a ▁subclass ing ▁hierarchy , ▁the ▁union ▁of ▁a ▁type ▁and ▁an ▁ancest or ▁type ▁( such ▁as ▁its ▁parent ) ▁is ▁the ▁ancest or ▁type . ▁The ▁union ▁of ▁sib ling ▁types ▁is ▁a ▁sub type ▁of ▁their ▁common ▁ancest or ▁( that ▁is , ▁all ▁operations ▁permitted ▁on ▁their ▁common