| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
6.15 Fixed-Point Types
As an extension, GNU C supports fixed-point types as defined in the N1169 draft of ISO/IEC DTR 18037. Support for fixed-point types in GCC will evolve as the draft technical report changes. Calling conventions for any target might also change. Not all targets support fixed-point types.
The fixed-point types are
short _Fract,
_Fract,
long _Fract,
long long _Fract,
unsigned short _Fract,
unsigned _Fract,
unsigned long _Fract,
unsigned long long _Fract,
_Sat short _Fract,
_Sat _Fract,
_Sat long _Fract,
_Sat long long _Fract,
_Sat unsigned short _Fract,
_Sat unsigned _Fract,
_Sat unsigned long _Fract,
_Sat unsigned long long _Fract,
short _Accum,
_Accum,
long _Accum,
long long _Accum,
unsigned short _Accum,
unsigned _Accum,
unsigned long _Accum,
unsigned long long _Accum,
_Sat short _Accum,
_Sat _Accum,
_Sat long _Accum,
_Sat long long _Accum,
_Sat unsigned short _Accum,
_Sat unsigned _Accum,
_Sat unsigned long _Accum,
_Sat unsigned long long _Accum.
Fixed-point data values contain fractional and optional integral parts. The format of fixed-point data varies and depends on the target machine.
Support for fixed-point types includes:
-
prefix and postfix increment and decrement operators (
++,--) -
unary arithmetic operators (
+,-,!) -
binary arithmetic operators (
+,-,*,/) -
binary shift operators (
<<,>>) -
relational operators (
<,<=,>=,>) -
equality operators (
==,!=) -
assignment operators (
+=,-=,*=,/=,<<=,>>=) - conversions to and from integer, floating-point, or fixed-point types
Use a suffix in a fixed-point literal constant:
- ‘hr’ or ‘HR’ for
short _Fractand_Sat short _Fract - ‘r’ or ‘R’ for
_Fractand_Sat _Fract - ‘lr’ or ‘LR’ for
long _Fractand_Sat long _Fract - ‘llr’ or ‘LLR’ for
long long _Fractand_Sat long long _Fract - ‘uhr’ or ‘UHR’ for
unsigned short _Fractand_Sat unsigned short _Fract - ‘ur’ or ‘UR’ for
unsigned _Fractand_Sat unsigned _Fract - ‘ulr’ or ‘ULR’ for
unsigned long _Fractand_Sat unsigned long _Fract - ‘ullr’ or ‘ULLR’ for
unsigned long long _Fractand_Sat unsigned long long _Fract - ‘hk’ or ‘HK’ for
short _Accumand_Sat short _Accum - ‘k’ or ‘K’ for
_Accumand_Sat _Accum - ‘lk’ or ‘LK’ for
long _Accumand_Sat long _Accum - ‘llk’ or ‘LLK’ for
long long _Accumand_Sat long long _Accum - ‘uhk’ or ‘UHK’ for
unsigned short _Accumand_Sat unsigned short _Accum - ‘uk’ or ‘UK’ for
unsigned _Accumand_Sat unsigned _Accum - ‘ulk’ or ‘ULK’ for
unsigned long _Accumand_Sat unsigned long _Accum - ‘ullk’ or ‘ULLK’ for
unsigned long long _Accumand_Sat unsigned long long _Accum
GCC support of fixed-point types as specified by the draft technical report is incomplete:
- Pragmas to control overflow and rounding behaviors are not implemented.
Fixed-point types are supported by the DWARF 2 debug information format.
| [ << ] | [ < ] | [ Up ] | [ > ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
This document was generated on October 19, 2013 using texi2html 5.0.
