On the MSVC++ compiler, one can use the __int8
, __int16
, __int32
and similar types for integers with specific sizes. This is extremely useful for applications which need to work with low-level data structures like custom file formats, hardware control data structures and the like.
Is there a similar equivalent I can use on the GCC compiler?
The size of the “int” integer type is 4 bytes and the size of the “long long” integer type is 8 bytes for all the above combinations of operating system, architecture and compiler.
Mostly compiler(gcc or clang) of C and C++, nowadays come with default 64-bit version. Well it would be a good option in terms of speed purposes.
With GCC, long integers are normally 32 bits long and long long integers are 64 bits long, but it varies with the computer hardware and implementation of GCC, so check your system's documentation. These integer types differ in the size of the integer they can hold and the amount of storage required for them.
ISO standard C, starting with the C99 standard, adds the standard header <stdint.h>
that defines these:
uint8_t - unsigned 8 bit
int8_t - signed 8 bit
uint16_t - unsigned 16 bit
int16_t - signed 16 bit
uint32_t - unsigned 32 bit
int32_t - signed 32 bit
uint64_t - unsigned 64 bit
int64_t - signed 64 bit
I use these types all the time.
These types are defined only if the implementation supports predefined types with the appropriate sizes and characteristics (which most do).
<stdint.h>
also defines types with names of the form (u)int_leastN_t
(types that have at least the specified width) and (u)int_fastN_t
(the "fastest" types that have at least the specified width); these types are mandatory.
If you're using an old implementation that doesn't support <stdint.h>
, you can roll your own; one implementation is Doug Gwyn's "q8".
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With