title: Why Switch/Case and not If/Else If?
body: <p>This question in mainly pointed at C/C++, but I guess other languages are relevant as well.</p>
  
  <p>I can't understand why is switch/case still being used instead of if/else if. It seems to me much like using goto's, and results in the same sort of messy code, while the same results could be acheived with if/else if's in a much more organized manner.</p>
  
  <p>Still, I see these blocks around quite often. A common place to find them is near a message-loop (WndProc...), whereas these are among the places when they raise the heaviest havoc: variables are shared along the entire block, even when not propriate (and can't be initialized inside it). Extra attention has to be put on not dropping break's, and so on...</p>
  
  <p>Personally, I avoid using them, and I wonder wether I'm missing something?</p>
  
  <p>Are they more efficient than if/else's?
  Are they carried on by tradition?</p>