The arithmetic types are the integer types and the floating-point types.
Arithmetic types are required as the operands of the following operators:
- multiplicative-expression
multiplicative-expression * cast-expression
multiplicative-expression / cast-expression
- unary-expression
unary-operator cast-expression
- unary-operator
+
-
- assignment-expression
unary-expression assignment-operator assignment-expression
- assignment-operator
*=
/=
When both operands are of arithmetic types, several operators promote their operands to a more capable type, which is then the type of the result.
[: Much
more to be said! And current text does not fit new
context.]
The following types are guaranteed to be arithmetic; some are variations or aliases of others, and other, non-standard types may exist:
_Bool
atomic_
bool atomic_
char atomic_
char16_t atomic_
char32_t atomic_
int atomic_
int_ fast16_t atomic_
int_ fast32_t atomic_
int_ fast64_t atomic_
int_ fast8_t atomic_
int_ least16_t atomic_
int_ least32_t atomic_
int_ least64_t atomic_
int_ least8_t atomic_
intmax_t atomic_
intptr_t atomic_
llong atomic_
long atomic_
ptrdiff_t atomic_
schar atomic_
short atomic_
size_t atomic_
uchar atomic_
uint atomic_
uint_ fast16_t atomic_
uint_ fast32_t atomic_
uint_ fast64_t atomic_
uint_ fast8_t atomic_
uint_ least16_t atomic_
uint_ least32_t atomic_
uint_ least64_t atomic_
uint_ least8_t atomic_
uintmax_t atomic_
uintptr_t atomic_
ullong atomic_
ulong atomic_
ushort bool
char
clock_t
double
double _Complex
double _Imaginary
double complex
double imaginary
double_t
errno_t
float
float _Complex
float _Imaginary
float complex
float imaginary
float_t
int
int16_t
int32_t
int64_t
int8_t
int_
fast16_t int_
fast32_t int_
fast64_t int_
fast8_t int_
least16_t int_
least32_t int_
least64_t int_
least8_t intmax_t
intptr_t
long
long double
long double _Complex
long double _Imaginary
long double complex
long double imaginary
long long
ptrdiff_t
rsize_t
short
sig_
atomic_t signed char
size_t
time_t
uint16_t
uint32_t
uint64_t
uint8_t
uint_
fast16_t uint_
fast32_t uint_
fast64_t uint_
fast8_t uint_
least16_t uint_
least32_t uint_
least64_t uint_
least8_t uintmax_t
uintptr_t
unsigned
unsigned char
unsigned long
unsigned long long
unsigned short
wchar_t
wint_t