I found this article about switch statements pretty interesting:
http://741mhz.com/switch/
The author goes into detail about how the C switch statement ends up as assembly on a couple of implementations (Clang and GCC) and a variety of situations (e.g. Different numbers of cases, continuous values vs. sparse values, default case vs. non-default case).