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. General Programming
  3. C / C++ / MFC
  4. What is the size of an integer?

What is the size of an integer?

Scheduled Pinned Locked Moved C / C++ / MFC
questionc++comdata-structures
18 Posts 10 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.
  • Z Zdeslav Vojkovic

    actually, it is not OS dependent, but implementation dependent. standard states that sizeof(int) >= sizeof(short), and short is at least 16 bits. so, for different compilers, sizeof(int) can be different even on the same OS.

    P Offline
    P Offline
    Prakash Nadar
    wrote on last edited by
    #6

    and they are also processor dependent but not too much though. -Prakash -Prakash

    V 1 Reply Last reply
    0
    • P Prakash Nadar

      and they are also processor dependent but not too much though. -Prakash -Prakash

      V Offline
      V Offline
      vikas amin
      wrote on last edited by
      #7

      Processor dependent ????? :confused: Vikas Amin Embin Technology Bombay vikas.amin@embin.com

      P T 2 Replies Last reply
      0
      • V vikas amin

        Processor dependent ????? :confused: Vikas Amin Embin Technology Bombay vikas.amin@embin.com

        P Offline
        P Offline
        Prakash Nadar
        wrote on last edited by
        #8

        Well to understand this u need to know how softwares are dependent on hardware (processor) generally the integer size is the size of word size of the processor, for 80386 onwards the word size is 32 bit and hence the integer size in most of the OS on Intel machine is 32bit. Why the size of integer varies from compiler to compiler/OS 2 OS, because integer is the most used datatype and transfering a 32bit of data from the memory to processor is more efficient than other sized data. -Prakash -Prakash

        1 Reply Last reply
        0
        • S sunit5

          size of int is OS dependent never say die

          V Offline
          V Offline
          vikas amin
          wrote on last edited by
          #9

          Probably i would preffer to say implementation dependent then processor dependent . :cool: Vikas Amin Embin Technology Bombay vikas.amin@embin.com

          P 1 Reply Last reply
          0
          • V vikas amin

            Processor dependent ????? :confused: Vikas Amin Embin Technology Bombay vikas.amin@embin.com

            T Offline
            T Offline
            ThatsAlok
            wrote on last edited by
            #10

            vikas amin wrote:

            Processor dependent ?????

            In continuation with Mr. Prakash.. if you see := sizeof(long)==sizeof(int) in windows enviornment

            "Opinions are neither right nor wrong. I cannot change your opinion. I can, however, change what influences your opinion." - David Crow

            cheers, Alok Gupta VC Forum Q&A :- I/ IV

            1 Reply Last reply
            0
            • V vikas amin

              Probably i would preffer to say implementation dependent then processor dependent . :cool: Vikas Amin Embin Technology Bombay vikas.amin@embin.com

              P Offline
              P Offline
              Prakash Nadar
              wrote on last edited by
              #11

              vikas amin wrote:

              Probably i would preffer to say implementation dependent then processor dependent .

              yes but the implementation is dependent on the processor. :)


              -Prakash

              S 1 Reply Last reply
              0
              • Z Zdeslav Vojkovic

                actually, it is not OS dependent, but implementation dependent. standard states that sizeof(int) >= sizeof(short), and short is at least 16 bits. so, for different compilers, sizeof(int) can be different even on the same OS.

                D Offline
                D Offline
                David Crow
                wrote on last edited by
                #12

                Zdeslav Vojkovic wrote:

                ...sizeof(int) can be different even on the same OS.

                Do you have a valid example of such? I've never seen an int that varied in size on the same machine.


                "Take only what you need and leave the land as you found it." - Native American Proverb

                G 1 Reply Last reply
                0
                • D David Crow

                  Zdeslav Vojkovic wrote:

                  ...sizeof(int) can be different even on the same OS.

                  Do you have a valid example of such? I've never seen an int that varied in size on the same machine.


                  "Take only what you need and leave the land as you found it." - Native American Proverb

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

                  This goes back a bit in time, but... In Microsoft C 6.0 (MS-DOS era), an int was 16 bits. Watcom C 9.0, on the same machine, made an int to be 32 bits. The Microsoft target in this case was 16-bit real-mode MS-DOS while the Watcom target was 32-bit protected mode MS-DOS.


                  Software Zen: delete this; // [Fold With Us!](http://www.codeproject.com/script/profile/whos_who.asp?msg=1307432&id=10338#xx1307432xx)[[^](http://www.codeproject.com/script/profile/whos_who.asp?msg=1307432&id=10338#xx1307432xx "New Window")]

                  D 1 Reply Last reply
                  0
                  • G Gary R Wheeler

                    This goes back a bit in time, but... In Microsoft C 6.0 (MS-DOS era), an int was 16 bits. Watcom C 9.0, on the same machine, made an int to be 32 bits. The Microsoft target in this case was 16-bit real-mode MS-DOS while the Watcom target was 32-bit protected mode MS-DOS.


                    Software Zen: delete this; // [Fold With Us!](http://www.codeproject.com/script/profile/whos_who.asp?msg=1307432&id=10338#xx1307432xx)[[^](http://www.codeproject.com/script/profile/whos_who.asp?msg=1307432&id=10338#xx1307432xx "New Window")]

                    D Offline
                    D Offline
                    David Crow
                    wrote on last edited by
                    #14

                    But was it a true 32-bit int? That's like saying we have a 64-bit int today, but only because Microsoft's compiler mashes two 32-bit ints together, simulating a bigger one.


                    "Take only what you need and leave the land as you found it." - Native American Proverb

                    G 1 Reply Last reply
                    0
                    • D David Crow

                      But was it a true 32-bit int? That's like saying we have a 64-bit int today, but only because Microsoft's compiler mashes two 32-bit ints together, simulating a bigger one.


                      "Take only what you need and leave the land as you found it." - Native American Proverb

                      G Offline
                      G Offline
                      Gary R Wheeler
                      wrote on last edited by
                      #15

                      Actually it was. The 80386 processors and their descendents included direct 32-bit arithmetic and pointer support. The Watcom compiler supported protected mode execution with a flat memory model for a variety of DOS extenders. A "DOS extender" basically provided an execution environment for a protected mode application in the MS-DOS environment.

                      DavidCrow wrote:

                      Microsoft's compiler mashes two 32-bit ints together

                      Hmm. Is that still the case? I was under the impression that __int64 support since VS.NET 2002 was provided directly by native instructions.


                      Software Zen: delete this; // [Fold With Us!](http://www.codeproject.com/script/profile/whos_who.asp?msg=1307432&id=10338#xx1307432xx)[[^](http://www.codeproject.com/script/profile/whos_who.asp?msg=1307432&id=10338#xx1307432xx "New Window")]

                      D 1 Reply Last reply
                      0
                      • G Gary R Wheeler

                        Actually it was. The 80386 processors and their descendents included direct 32-bit arithmetic and pointer support. The Watcom compiler supported protected mode execution with a flat memory model for a variety of DOS extenders. A "DOS extender" basically provided an execution environment for a protected mode application in the MS-DOS environment.

                        DavidCrow wrote:

                        Microsoft's compiler mashes two 32-bit ints together

                        Hmm. Is that still the case? I was under the impression that __int64 support since VS.NET 2002 was provided directly by native instructions.


                        Software Zen: delete this; // [Fold With Us!](http://www.codeproject.com/script/profile/whos_who.asp?msg=1307432&id=10338#xx1307432xx)[[^](http://www.codeproject.com/script/profile/whos_who.asp?msg=1307432&id=10338#xx1307432xx "New Window")]

                        D Offline
                        D Offline
                        David Crow
                        wrote on last edited by
                        #16

                        Gary R. Wheeler wrote:

                        Is that still the case?

                        I'm not sure since I only use VC++ v6.

                        Gary R. Wheeler wrote:

                        I was under the impression that __int64 support since VS.NET 2002 was provided directly by native instructions.

                        Even on processors that do not a have 64-bit bus?


                        "Take only what you need and leave the land as you found it." - Native American Proverb

                        1 Reply Last reply
                        0
                        • P Prakash Nadar

                          vikas amin wrote:

                          Probably i would preffer to say implementation dependent then processor dependent .

                          yes but the implementation is dependent on the processor. :)


                          -Prakash

                          S Offline
                          S Offline
                          segment_fault
                          wrote on last edited by
                          #17

                          The most important thing to do is to always use the "sizeof" operation in any code you're referring to. Never, ever hardcode the size into your code. When reading/writing to a file - there are exceptions -- in general, avoid using "int" as a type when it comes to storage of data structures. Instead, define types such as DWORD, WORD, BYTE, etc. This will save you a lot of trouble down the road. Read more of what I have to say at http://directx9.blogspot.com/

                          P 1 Reply Last reply
                          0
                          • S segment_fault

                            The most important thing to do is to always use the "sizeof" operation in any code you're referring to. Never, ever hardcode the size into your code. When reading/writing to a file - there are exceptions -- in general, avoid using "int" as a type when it comes to storage of data structures. Instead, define types such as DWORD, WORD, BYTE, etc. This will save you a lot of trouble down the road. Read more of what I have to say at http://directx9.blogspot.com/

                            P Offline
                            P Offline
                            Prakash Nadar
                            wrote on last edited by
                            #18

                            segment_fault wrote:

                            The most important thing to do is to always use the "sizeof" operation in any code you're referring to. Never, ever hardcode the size into your code. When reading/writing to a file - there are exceptions -- in general, avoid using "int" as a type when it comes to storage of data structures. Instead, define types such as DWORD, WORD, BYTE, etc. This will save you a lot of trouble down the road.

                            yes i know that.


                            -Prakash

                            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