Languages/C/inttypes
(Difference between revisions)
m |
(→Integer types in C) |
||
Line 3: | Line 3: | ||
= Integer types in C = | = Integer types in C = | ||
The C language defines a lot of integer types (<code>char</code>, <code>short</code>, <code>int</code>, <code>unsigned int</code>,...) | The C language defines a lot of integer types (<code>char</code>, <code>short</code>, <code>int</code>, <code>unsigned int</code>,...) | ||
− | but | + | but unfortunately their size are implementation dependent (vendor/platform/compiler). |
− | Writing programs in a portable manner requires the use of known size. | + | Writing programs in a portable manner requires the use of known size integers. |
== C99 integer sizes == | == C99 integer sizes == | ||
Line 33: | Line 33: | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | == C++ support == | ||
+ | C++ users should use <stdint.h> | ||
+ | C++11 will introduce the <cstdint> header. | ||
== Compiler support & remarks == | == Compiler support & remarks == | ||
=== GCC === | === GCC === | ||
<code>gcc</code> fully supports <stdint.h>. | <code>gcc</code> fully supports <stdint.h>. | ||
+ | |||
=== HI TECH PIC18 C compiler === | === HI TECH PIC18 C compiler === | ||
− | + | Since version 9.65, this compiler has the <sdtint.h> file. | |
+ | But there is no <code>(u)int64_t</code>. | ||
+ | |||
+ | === Microchip XC8 compiler === | ||
+ | This compiler has the <sdtint.h> file. | ||
+ | But there is no <code>(u)int64_t</code>. | ||
[[Category:Languages]] [[Category:C]] | [[Category:Languages]] [[Category:C]] |
Revision as of 12:59, 12 February 2013
|
Integer types in C
The C language defines a lot of integer types (char
, short
, int
, unsigned int
,...)
but unfortunately their size are implementation dependent (vendor/platform/compiler).
Writing programs in a portable manner requires the use of known size integers.
C99 integer sizes
Recent compilers provide the <stdint.h> file that defines a lot of integer types, and because this is a standard, new code should no more use the "old" HEVs coding style.
C99 type | Old HEVs type | size (bits) | minimum value (define) | minimum value (numeric) | maximum value (define) | maximum value (numeric) |
uint8_t | UINT8 | 8 | - | 0 | UINT8_MAX | 255 |
uint16_t | UINT16 | 16 | - | 0 | UINT16_MAX | 65'535 |
uint32_t | UINT32 | 32 | - | 0 | UINT32_MAX | 4'294'967'295 |
uint64_t | UINT64 | 64 | - | 0 | UINT64_MAX | 18'446'744'073'709'551'615 |
int8_t | INT8 | 8 | INT8_MIN | -128 | UINT8_MAX | 127 |
int16_t | INT16 | 16 | INT16_MIN | -3'2768 | UINT16_MAX | 32'767 |
int32_t | INT32 | 32 | INT32_MIN | -2'147'483'648 | UINT32_MAX | 2'147'483'647 |
int64_t | INT64 | 64 | INT64_MIN | -9'223'372'036'854'775'807 | UINT64_MAX | 9'223'372'036'854'775'807 |
C++ support
C++ users should use <stdint.h> C++11 will introduce the <cstdint> header.
Compiler support & remarks
GCC
gcc
fully supports <stdint.h>.
HI TECH PIC18 C compiler
Since version 9.65, this compiler has the <sdtint.h> file.
But there is no (u)int64_t
.
Microchip XC8 compiler
This compiler has the <sdtint.h> file.
But there is no (u)int64_t
.