Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. Other Discussions
  3. The Weird and The Wonderful
  4. Bug of the day

Bug of the day

Scheduled Pinned Locked Moved The Weird and The Wonderful
help
37 Posts 23 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • P Pablo Aliskevicius

    I usually prefer:

    if (42 == ComputeSomeThing(x)) {
    //...
    }

    This one avoids the = against == pit. Another thing I do: my IDE is configured to show operators (like '(){};,+-=...') in color, so they are a bit harder to miss (like the original example). There are two other tools that can help with this: compiler warnings, and static code analysis. JM2B,

    Pablo. "Accident: An inevitable occurrence due to the action of immutable natural laws." (Ambrose Bierce, circa 1899).

    S Offline
    S Offline
    StatementTerminator
    wrote on last edited by
    #26

    Pablo Aliskevicius wrote:

    This one avoids the = against == pit.

    LOL, that one kills me, because I'm constantly switching back and forth between C# and VB :((

    1 Reply Last reply
    0
    • A anton_l

      It seems that problem is in semicolon after "if" statement. DoSomeThing will be fired any time the code executes.

      K Offline
      K Offline
      KP Lee
      wrote on last edited by
      #27

      anton_l wrote:

      It seems that problem is in semicolon after "if" statement.

      It seems that's the reason he posted it! :laugh:

      1 Reply Last reply
      0
      • K Klaus Werner Konrad

        Wich compiler ?

        while (*dest++ = *source++);

        is completely correct, isn't it ?

        L Offline
        L Offline
        Lutoslaw
        wrote on last edited by
        #28

        Klaus-Werner Konrad wrote:

        Wich compiler?

        FTFY: Witch compiler Actually, in this case the C# produces three useless wormings: both for the "while(...);" (an empty statment), "x=y" (an assigment instead of a comparison) and the "*" (an "unsafe" code), does it?

        Greetings - Jacek

        K B 2 Replies Last reply
        0
        • R Ravi Bhavnani

          Does that even compile? /ravi

          My new year resolution: 2048 x 1536 Home | Articles | My .NET bits | Freeware ravib(at)ravib(dot)com

          T Offline
          T Offline
          Thomas Daniels
          wrote on last edited by
          #29

          No, it doesn't. But that's just the bug: it doesn't compile! [EDIT] I'm sorry, I didn't see the semicolon after the if statement. That's the bug! :doh:

          The quick red ProgramFOX jumps right over the Lazy<Dog>. My latest article: Understand how bitwise operators work (C# and VB.NET examples) My group: C# Programmers Group

          1 Reply Last reply
          0
          • L Lutoslaw

            Klaus-Werner Konrad wrote:

            Wich compiler?

            FTFY: Witch compiler Actually, in this case the C# produces three useless wormings: both for the "while(...);" (an empty statment), "x=y" (an assigment instead of a comparison) and the "*" (an "unsafe" code), does it?

            Greetings - Jacek

            K Offline
            K Offline
            Klaus Werner Konrad
            wrote on last edited by
            #30

            Thanks for the correction. My example was - as a reply to the mention of C, of course a C code snippet, and is the full working function body for strcpy(). Of course, it's unsafe - but lightning fast :-)

            B 1 Reply Last reply
            0
            • L Lutoslaw

              Klaus-Werner Konrad wrote:

              Wich compiler?

              FTFY: Witch compiler Actually, in this case the C# produces three useless wormings: both for the "while(...);" (an empty statment), "x=y" (an assigment instead of a comparison) and the "*" (an "unsafe" code), does it?

              Greetings - Jacek

              B Offline
              B Offline
              BobJanova
              wrote on last edited by
              #31

              They're not useless warnings, they're warning you that you did something unintended. Actually this wouldn't compile at all in C#, even with unsafe mode turned on, because the result type isn't boolean. It's a classic and well known piece of C code, and I think you only got a warning for the empty loop body (and if you did if(a = 3) by accident you were just screwed, hence writing if(3 == a) instead which is an error if you screw it up).

              L 1 Reply Last reply
              0
              • K Klaus Werner Konrad

                Thanks for the correction. My example was - as a reply to the mention of C, of course a C code snippet, and is the full working function body for strcpy(). Of course, it's unsafe - but lightning fast :-)

                B Offline
                B Offline
                BobJanova
                wrote on last edited by
                #32

                Just in case you didn't get the joke there, he's making a funny about the compiler being witchcraft. The word you meant to use is 'which'.

                1 Reply Last reply
                0
                • B BobJanova

                  They're not useless warnings, they're warning you that you did something unintended. Actually this wouldn't compile at all in C#, even with unsafe mode turned on, because the result type isn't boolean. It's a classic and well known piece of C code, and I think you only got a warning for the empty loop body (and if you did if(a = 3) by accident you were just screwed, hence writing if(3 == a) instead which is an error if you screw it up).

                  L Offline
                  L Offline
                  Lutoslaw
                  wrote on last edited by
                  #33

                  Right. :thumbsup:

                  Greetings - Jacek

                  1 Reply Last reply
                  0
                  • D Delphi4ever

                    if(SomeThing == SomeOtherThing); { DoSomeThing; } This one has been sitting in the codebase for a couple of years... :(( At least it did SomeThing...

                    A Offline
                    A Offline
                    Adam David Hill
                    wrote on last edited by
                    #34

                    Ooh, nasty! Couldn't see it at first.

                    Check out my latest article: Celerity: How it was all done. A complete how-to on our sensor-driven head-tracking virtual reality tunnel game in C#.

                    1 Reply Last reply
                    0
                    • D Delphi4ever

                      if(SomeThing == SomeOtherThing); { DoSomeThing; } This one has been sitting in the codebase for a couple of years... :(( At least it did SomeThing...

                      M Offline
                      M Offline
                      Marc Clifton
                      wrote on last edited by
                      #35

                      Delphi4ever wrote:

                      if(SomeThing == SomeOtherThing);

                      I remember years ago spending a few hours debugging why (in C++):

                      for (int i=0; i<10; i++);
                      DoSomething();

                      where DoSomething executed only once. I only had to learn that lesson once! :rolleyes: Marc

                      Testers Wanted!
                      Latest Article: User Authentication on Ruby on Rails - the definitive how to
                      My Blog

                      1 Reply Last reply
                      0
                      • G Gary Wheeler

                        I've worked with people who did this:

                        if condition
                        DoSomething();
                        else
                        {
                        DoOtherThing1();
                        DoOtherThing2();
                        }

                        or

                        if condition
                        {
                        DoSomething1();
                        DoSomething2();
                        }
                        else
                        DoOtherThing();

                        Both of which give me the creeping heebie-jeebies.

                        Software Zen: delete this;

                        C Offline
                        C Offline
                        cjb110
                        wrote on last edited by
                        #36

                        oh, urm, oops? I do that...

                        G 1 Reply Last reply
                        0
                        • C cjb110

                          oh, urm, oops? I do that...

                          G Offline
                          G Offline
                          Gary Wheeler
                          wrote on last edited by
                          #37

                          It's valid syntax, and if you're confident that you'll never ever forget to add or remove braces appropriately, go for it.

                          Software Zen: delete this;

                          1 Reply Last reply
                          0
                          Reply
                          • Reply as topic
                          Log in to reply
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes


                          • Login

                          • Don't have an account? Register

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • World
                          • Users
                          • Groups