switches can be more efficient. They often resolve by the compiler to a lookup table instead of a branch. Also the fall-through (break or no-break) and default can be made to do logic cleaner for some problems.
anything can be turned into an integer for a switch, but this extra step costs a little.