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:
++
, --
) +
, -
, !
) +
, -
, *
, /
) <<
, >>
) <
, <=
, >=
, >
) ==
, !=
) +=
, -=
, *=
, /=
, <<=
, >>=
) Use a suffix in a fixed-point literal constant:
hr
’ or ‘HR
’ for short _Fract
and _Sat short _Fract
r
’ or ‘R
’ for _Fract
and _Sat _Fract
lr
’ or ‘LR
’ for long _Fract
and _Sat long _Fract
llr
’ or ‘LLR
’ for long long _Fract
and _Sat long long _Fract
uhr
’ or ‘UHR
’ for unsigned short _Fract
and _Sat unsigned short _Fract
ur
’ or ‘UR
’ for unsigned _Fract
and _Sat unsigned _Fract
ulr
’ or ‘ULR
’ for unsigned long _Fract
and _Sat unsigned long _Fract
ullr
’ or ‘ULLR
’ for unsigned long long _Fract
and _Sat unsigned long long _Fract
hk
’ or ‘HK
’ for short _Accum
and _Sat short _Accum
k
’ or ‘K
’ for _Accum
and _Sat _Accum
lk
’ or ‘LK
’ for long _Accum
and _Sat long _Accum
llk
’ or ‘LLK
’ for long long _Accum
and _Sat long long _Accum
uhk
’ or ‘UHK
’ for unsigned short _Accum
and _Sat unsigned short _Accum
uk
’ or ‘UK
’ for unsigned _Accum
and _Sat unsigned _Accum
ulk
’ or ‘ULK
’ for unsigned long _Accum
and _Sat unsigned long _Accum
ullk
’ or ‘ULLK
’ for unsigned long long _Accum
and _Sat unsigned long long _Accum
GCC support of fixed-point types as specified by the draft technical report is incomplete:
Fixed-point types are supported by the DWARF 2 debug information format.
© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-5.4.0/gcc/Fixed_002dPoint.html