switch question

This is a discussion on switch question within the C++ Programming forums, part of the General Programming Boards category; >> Is that smart to do? Would you pros do that? In some situations, yes. You have to be very ...

  1. #16
    Registered User
    Join Date
    Jan 2005
    Posts
    7,317
    >> Is that smart to do? Would you pros do that?
    In some situations, yes. You have to be very careful, though, because it is an easy thing to miss. You should make it obvious that you purposefully didn't put in the break, and you should make it obvious that the code under the next case counts for multiple cases. For example, notice how the comments help indicate what you are doing so that when you or somebody else comes back to maintain or update the code, there is less chance of confusion.
    Code:
    switch (val)
    {
        case 1:
        case 2:
        case 3:
            code();
            moreCode();
            break;
    
        case 4:
            doStuff();
            doOtherStuff();
            // fall through on purpose!
    
        // case 4:
        case 5:
            doMoreStuff();
            break;
    }
    If you can do something in a manner that is more clear than the above, you should choose that version instead. Even with the comments I don't like the above code.
    Last edited by Daved; 11-08-2006 at 10:21 AM.

  2. #17
    and the hat of wrongness Salem's Avatar
    Join Date
    Aug 2001
    Location
    The edge of the known universe
    Posts
    32,341
    Lookup "Duff's device" if you want to see switch/case "abuse"
    If you dance barefoot on the broken glass of undefined behaviour, you've got to expect the occasional cut.
    If at first you don't succeed, try writing your phone number on the exam paper.
    I support http://www.ukip.org/ as the first necessary step to a free Europe.

  3. #18
    Reverse Engineer maxorator's Avatar
    Join Date
    Aug 2005
    Location
    Estonia
    Posts
    2,318
    Forgetting to place a break after each case will only cause it to "fall through" to the next one anyway. I always make sure I end my cases with a break, it makes good sense, unless of course the idea of the program is to test the weakness in a switch statement that is
    Sometimes I forget to end the case before WM_DESTROY with a break, so my program just exits when the that case is activated. First time when this happened I was quite confused.
    "The Internet treats censorship as damage and routes around it." - John Gilmore

Page 2 of 2 FirstFirst 12
Popular pages Recent additions subscribe to a feed

Similar Threads

  1. another do while question
    By kbpsu in forum C++ Programming
    Replies: 3
    Last Post: 03-23-2009, 12:14 PM
  2. Switch Case Question
    By dnysveen in forum C++ Programming
    Replies: 12
    Last Post: 06-06-2006, 05:34 AM
  3. Replies: 7
    Last Post: 05-25-2006, 12:51 PM
  4. Exam Question - Possible Mistake?
    By Richie T in forum C++ Programming
    Replies: 15
    Last Post: 05-08-2006, 03:44 PM
  5. Very simple question, problem in my Code.
    By Vber in forum C Programming
    Replies: 7
    Last Post: 11-16-2002, 02:57 PM

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21