Difference between int32, int, int32_t, int8 and int8_t

后端 未结 3 1626
别那么骄傲
别那么骄傲 2020-12-07 08:49

I came across the data type int32_t in a C program recently. I know that it stores 32 bits, but don\'t int and int32 do the same?

3条回答
  •  鱼传尺愫
    2020-12-07 09:32

    Always keep in mind that 'size' is variable if not explicitly specified so if you declare

     int i = 10;
    

    On some systems it may result in 16-bit integer by compiler and on some others it may result in 32-bit integer (or 64-bit integer on newer systems).

    In embedded environments this may end up in weird results (especially while handling memory mapped I/O or may be consider a simple array situation), so it is highly recommended to specify fixed size variables. In legacy systems you may come across

     typedef short INT16;
     typedef int INT32;
     typedef long INT64; 
    

    Starting from C99, the designers added stdint.h header file that essentially leverages similar typedefs.

    On a windows based system, you may see entries in stdin.h header file as

     typedef signed char       int8_t;
     typedef signed short      int16_t;
     typedef signed int        int32_t;
     typedef unsigned char     uint8_t;
    

    There is quite more to that like minimum width integer or exact width integer types, I think it is not a bad thing to explore stdint.h for a better understanding.

提交回复
热议问题