Languages/C/inttypes

(Difference between revisions)
Jump to: navigation, search
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 unfortunatly there size depends on the platform (or compiler).
+
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 ===
There is no <code>(u)int64_t</code>.
+
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 11:59, 12 February 2013

Contents

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.

Personal tools
Namespaces
Variants
Actions
Navigation
Browse
Toolbox