Mikroc – ABL electronic PIC Microcontrollers PIC16 User Manual
Page 91

Arithmetic Conversions
When you use an arithmetic expression, such as
a+b
, where
a
and
b
are of differ-
ent arithmetic types, mikroC performs implicit type conversions before the expres-
sion is evaluated. These standard conversions include promotions of “lower” types
to “higher” types in the interests of accuracy and consistency.
Assigning a signed character object (such as a variable) to an integral object
results in automatic sign extension. Objects of type
signed char
always use
sign extension; objects of type
unsigned char
always set the high byte to zero
when converted to
int
.
Converting a longer integral type to a shorter type truncates the higher order bits
and leaves low-order bits unchanged. Converting a shorter integral type to a longer
type either sign-extends or zero-fills the extra bits of the new value, depending on
whether the shorter type is signed or unsigned, respectively.
Note: Conversion of floating point data into integral value (in assignments or via
explicit typecast) produces correct results only if the
float
value does not exceed
the scope of destination integral type.
First, any small integral types are converted according to the following rules:
1.
char
converts to
int
2.
signed char
converts to
int
, with the same value
3.
short
converts to
int
, with the same value, sign-extended
4.
unsigned short
converts to unsigned int, with the same value, zero-filled
5.
enum
converts to
int
, with the same value
After this, any two values associated with an operator are either
int
(including
the
long
and
unsigned
modifiers), or they are float (equivalent with
double
and
long double
in mikroC).
1. If either operand is
float
, the other operand is converted to
float
2. Otherwise, if either operand is
unsigned long
, the other operand is converted
to
unsigned long
3. Otherwise, if either operand is
long
, the other operand is converted to
long
4. Otherwise, if either operand is
unsigned
, the other operand is converted to
u
nsigned
5. Otherwise, both operands are
int
MikroElektronika: Development tools - Books - Compilers
83
page
mikroC - C Compiler for Microchip PIC microcontrollers
mikroC
making it simple...