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. The Lounge
  3. The Zig Saga...

The Zig Saga...

Scheduled Pinned Locked Moved The Lounge
csharpquestion
26 Posts 8 Posters 27 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.
  • J Offline
    J Offline
    Jeremy Falcon
    wrote on last edited by
    #1

    It's the little things like this that's practically forcing me to learn to Zig. I mean... C should be getting some of this stuff so it stops falling so far behind. I mean, why leave systems languages in the dust? Such as being able to use underscores to increase readability in long numbers. I mean C# has had it for a while now. What gives? const jenny: u32 = 867_5309 // don't lose my number

    Jeremy Falcon

    P Mircea NeacsuM R S 4 Replies Last reply
    0
    • J Jeremy Falcon

      It's the little things like this that's practically forcing me to learn to Zig. I mean... C should be getting some of this stuff so it stops falling so far behind. I mean, why leave systems languages in the dust? Such as being able to use underscores to increase readability in long numbers. I mean C# has had it for a while now. What gives? const jenny: u32 = 867_5309 // don't lose my number

      Jeremy Falcon

      Mircea NeacsuM Offline
      Mircea NeacsuM Offline
      Mircea Neacsu
      wrote on last edited by
      #2

      Are you suggesting that underscore is significantly better than single quote[^]? Number formatting has been available since C++14.

      Mircea

      J 1 Reply Last reply
      0
      • J Jeremy Falcon

        It's the little things like this that's practically forcing me to learn to Zig. I mean... C should be getting some of this stuff so it stops falling so far behind. I mean, why leave systems languages in the dust? Such as being able to use underscores to increase readability in long numbers. I mean C# has had it for a while now. What gives? const jenny: u32 = 867_5309 // don't lose my number

        Jeremy Falcon

        P Offline
        P Offline
        PIEBALDconsult
        wrote on last edited by
        #3

        Never heard of that in C#. Seems pointless, so I guess they probably added it.

        J G 2 Replies Last reply
        0
        • Mircea NeacsuM Mircea Neacsu

          Are you suggesting that underscore is significantly better than single quote[^]? Number formatting has been available since C++14.

          Mircea

          J Offline
          J Offline
          Jeremy Falcon
          wrote on last edited by
          #4

          Does that apply to C as well? If so, I never knew that. Let me try it real quick... Nope, just tried real quick with an online compiler. It's still a no-go for C. Which is sad IMO, would love to see C see these (say that 5 times real quick).

          Jeremy Falcon

          1 Reply Last reply
          0
          • P PIEBALDconsult

            Never heard of that in C#. Seems pointless, so I guess they probably added it.

            J Offline
            J Offline
            Jeremy Falcon
            wrote on last edited by
            #5

            Well in C, took us over a decade to a get a bool. So ya know, it's easy to impress me. :laugh: :laugh: Back in the day if I had a large number I'd just do something like this in a comment beside it:

            const int bruh = 123456789; // 123,456,789

            So, it's not like a huge lifesaver since the comment would serve the same purpose. Just wanna those neat little things.

            Jeremy Falcon

            P C 2 Replies Last reply
            0
            • J Jeremy Falcon

              Well in C, took us over a decade to a get a bool. So ya know, it's easy to impress me. :laugh: :laugh: Back in the day if I had a large number I'd just do something like this in a comment beside it:

              const int bruh = 123456789; // 123,456,789

              So, it's not like a huge lifesaver since the comment would serve the same purpose. Just wanna those neat little things.

              Jeremy Falcon

              P Offline
              P Offline
              PIEBALDconsult
              wrote on last edited by
              #6

              You have bools in C?! 🫨

              J 1 Reply Last reply
              0
              • P PIEBALDconsult

                You have bools in C?! 🫨

                J Offline
                J Offline
                Jeremy Falcon
                wrote on last edited by
                #7

                We special now. :-D

                Jeremy Falcon

                P 1 Reply Last reply
                0
                • J Jeremy Falcon

                  We special now. :-D

                  Jeremy Falcon

                  P Offline
                  P Offline
                  PIEBALDconsult
                  wrote on last edited by
                  #8

                  Dagnabit, I step away for twenty years and everything changes. Having said that... I expect that HP hasn't advanced DEC/Compaq/HP C for OpenVMS.

                  1 Reply Last reply
                  0
                  • J Jeremy Falcon

                    Well in C, took us over a decade to a get a bool. So ya know, it's easy to impress me. :laugh: :laugh: Back in the day if I had a large number I'd just do something like this in a comment beside it:

                    const int bruh = 123456789; // 123,456,789

                    So, it's not like a huge lifesaver since the comment would serve the same purpose. Just wanna those neat little things.

                    Jeremy Falcon

                    C Offline
                    C Offline
                    charlieg
                    wrote on last edited by
                    #9

                    Wait, what? Why the heck would you add commas for large numbers? It's a number. First, if you are entering large numbers like this in your code in the middle of processing, you need to have your code reviewed. This falls under a magic number. A very long time ago, and I'm being sarcastic, we'd do this: #define _A_VERY_LARGE_NUMBER 12345678901234 Better yet, we'd so something like: // Folks, we use metric in this code. If you introduce english units, I will haunt you from the grave. #define SPEED_OF_LIGHT_METERS_PER_SEC 299792458

                    Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                    J D 2 Replies Last reply
                    0
                    • C charlieg

                      Wait, what? Why the heck would you add commas for large numbers? It's a number. First, if you are entering large numbers like this in your code in the middle of processing, you need to have your code reviewed. This falls under a magic number. A very long time ago, and I'm being sarcastic, we'd do this: #define _A_VERY_LARGE_NUMBER 12345678901234 Better yet, we'd so something like: // Folks, we use metric in this code. If you introduce english units, I will haunt you from the grave. #define SPEED_OF_LIGHT_METERS_PER_SEC 299792458

                      Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                      J Offline
                      J Offline
                      Jeremy Falcon
                      wrote on last edited by
                      #10

                      So, you're saying I should avoid something like this? :rolleyes:

                      #include
                      #include

                      #define ONE 123
                      #define TWO 456

                      unsigned concatenate(unsigned x, unsigned y) {
                      unsigned pow = 10;
                      while(y >= pow) pow *= 10;
                      return x * pow + y;
                      }

                      int main()
                      {
                      printf("Bro %d", (int)concatenate((unsigned)ONE, (unsigned)TWO));

                      return 0;
                      

                      }

                      Jeremy Falcon

                      C 1 Reply Last reply
                      0
                      • J Jeremy Falcon

                        So, you're saying I should avoid something like this? :rolleyes:

                        #include
                        #include

                        #define ONE 123
                        #define TWO 456

                        unsigned concatenate(unsigned x, unsigned y) {
                        unsigned pow = 10;
                        while(y >= pow) pow *= 10;
                        return x * pow + y;
                        }

                        int main()
                        {
                        printf("Bro %d", (int)concatenate((unsigned)ONE, (unsigned)TWO));

                        return 0;
                        

                        }

                        Jeremy Falcon

                        C Offline
                        C Offline
                        charlieg
                        wrote on last edited by
                        #11

                        lol. yup. Don't be stupid. Decades ago, I ran a development group. I had a rule - need a book, buy it and submit an expense form. I had people with 10+ years of development experience freeze up. What, I don't need approval first? Nope, apply common sense and the intelligence I'm paying you for. My welcome intro speech was, "You shall use source control. If you have an issue with this, resign now." Sadly, your example is code I have seen.

                        Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                        1 Reply Last reply
                        0
                        • J Jeremy Falcon

                          It's the little things like this that's practically forcing me to learn to Zig. I mean... C should be getting some of this stuff so it stops falling so far behind. I mean, why leave systems languages in the dust? Such as being able to use underscores to increase readability in long numbers. I mean C# has had it for a while now. What gives? const jenny: u32 = 867_5309 // don't lose my number

                          Jeremy Falcon

                          R Offline
                          R Offline
                          Ruffnik
                          wrote on last edited by
                          #12

                          C won't ever get up-to-date as C proponents don't want anything modern. It's not like system languages get left in the dust though, Rust is having some exciting evolution.

                          J C 2 Replies Last reply
                          0
                          • P PIEBALDconsult

                            Never heard of that in C#. Seems pointless, so I guess they probably added it.

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

                            C# binary literals:

                            const uint bitmask = 0b0010_0000_0000_1100_0000_0001_0000_1111;

                            The underscores are useful, no?

                            Software Zen: delete this;

                            P 1 Reply Last reply
                            0
                            • G Gary Wheeler

                              C# binary literals:

                              const uint bitmask = 0b0010_0000_0000_1100_0000_0001_0000_1111;

                              The underscores are useful, no?

                              Software Zen: delete this;

                              P Offline
                              P Offline
                              PIEBALDconsult
                              wrote on last edited by
                              #14

                              I'd use hex.

                              G 1 Reply Last reply
                              0
                              • C charlieg

                                Wait, what? Why the heck would you add commas for large numbers? It's a number. First, if you are entering large numbers like this in your code in the middle of processing, you need to have your code reviewed. This falls under a magic number. A very long time ago, and I'm being sarcastic, we'd do this: #define _A_VERY_LARGE_NUMBER 12345678901234 Better yet, we'd so something like: // Folks, we use metric in this code. If you introduce english units, I will haunt you from the grave. #define SPEED_OF_LIGHT_METERS_PER_SEC 299792458

                                Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                                D Offline
                                D Offline
                                destynova
                                wrote on last edited by
                                #15

                                Extracting magic numbers as named constants is usually a good idea, but orthogonal to the question of whether an underscore separator is helpful or not. It absolutely is helpful if you're dealing with number with mure than 7 or 8 digits. There's a reason we use commas (or periods in continental Europe) to break numbers into groups of 3 digits: it makes it much more obvious when a digit is missing (or erroneously present).

                                C 1 Reply Last reply
                                0
                                • P PIEBALDconsult

                                  I'd use hex.

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

                                  The binary literals are handy for hardware register bits. This is especially true when the documentation is written by a hardware engineer who documents things by bit numbers rather than masks. Defining this sort of thing with hex is okay, but it takes more time when reading.

                                  Software Zen: delete this;

                                  P 1 Reply Last reply
                                  0
                                  • G Gary Wheeler

                                    The binary literals are handy for hardware register bits. This is especially true when the documentation is written by a hardware engineer who documents things by bit numbers rather than masks. Defining this sort of thing with hex is okay, but it takes more time when reading.

                                    Software Zen: delete this;

                                    P Offline
                                    P Offline
                                    PIEBALDconsult
                                    wrote on last edited by
                                    #17

                                    VB has datetime literals, I'd find them more useful in my work.

                                    1 Reply Last reply
                                    0
                                    • R Ruffnik

                                      C won't ever get up-to-date as C proponents don't want anything modern. It's not like system languages get left in the dust though, Rust is having some exciting evolution.

                                      J Offline
                                      J Offline
                                      Jeremy Falcon
                                      wrote on last edited by
                                      #18

                                      Yeah, and what makes it worse is that C is use everywhere. So now there are huge committees involved, so things (even if they did happen) will take a while to get ratified and accepted.

                                      Jeremy Falcon

                                      R 1 Reply Last reply
                                      0
                                      • D destynova

                                        Extracting magic numbers as named constants is usually a good idea, but orthogonal to the question of whether an underscore separator is helpful or not. It absolutely is helpful if you're dealing with number with mure than 7 or 8 digits. There's a reason we use commas (or periods in continental Europe) to break numbers into groups of 3 digits: it makes it much more obvious when a digit is missing (or erroneously present).

                                        C Offline
                                        C Offline
                                        charlieg
                                        wrote on last edited by
                                        #19

                                        fair enough. So: #define SPEED_OF_LIGHT_M_PER_SEC 299,792,458 :) I understand your point, but I abhor magic numbers in code even if I know what they mean. I hate magic functions, and don't get me started on hideously complex macros that cannot be debugged. Hex constants are okay as well, since I can transpose the bits in my head while reading - but I can see the benefit of breaking up long hex strings when you are masking say a 64 bit value. The ultimate goal is to avoid errors.

                                        Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                                        D 1 Reply Last reply
                                        0
                                        • R Ruffnik

                                          C won't ever get up-to-date as C proponents don't want anything modern. It's not like system languages get left in the dust though, Rust is having some exciting evolution.

                                          C Offline
                                          C Offline
                                          charlieg
                                          wrote on last edited by
                                          #20

                                          We'll eventually die off and leave you with it as well as the COBOL.

                                          Charlie Gilley “They who can give up essential liberty to obtain a little temporary safety deserve neither liberty nor safety.” BF, 1759 Has never been more appropriate.

                                          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