What determines the size of integer in C?

c, c++, sizeof

Solution

Ultimately the compiler does, but in order for compiled code to play nicely with system libraries, most compilers match the behavior of the compiler[s] used to build the target system.

So loosely speaking, the size of `int` is a property of the target hardware and OS (two different OSs on the same hardware may have a different size of `int`, and the same OS running on two different machines may have a different size of `int`; there are reasonably common examples of both).

All of this is also constrained by the rules in the C standard. `int` must be large enough to represent all values between `-32767` and `32767`, for example.

Problem

Possible Duplicate: size of int, long, etc Does the size of an int depend on the compiler and/or processor? I'm not sure if similar questions have been asked before on SO (Atleast, I couldn't find any while searching, so thought of asking myself). What determines the size of `int` (and other datatypes) in `C`. I've read it depends on the machine/operating system/compiler, but haven't come across a clear/detailed enough explanation on things like what overrides the other, etc. Any explanation or pointers will be really helpful.

Original source

Related problems