unsigned to double
Greg Fischer
gsf at astroatc.UUCP
Thu Jan 19 05:11:42 AEST 1989
Running the latest Plum-Hall C Validation Suite through 4.3BSD C on
a VAX 11/780, it appears that when the compiler converts an unsigned
to a double during constant-folding, the _unsigned_ value is treated as the
_signed_ value with the equivalent bit-pattern.
For example, code generated for
double d = 0xfffffffd;
will put -3.0 into d, rather than the expected unsigned value. Code
generated for
unsigned u = 0xfffffffd;
double d = u;
is correct.
On investigating the compiler code (trees.c), at the point that the
conversion is done, they actually test if the integer value is unsigned,
but commented out the code to cast the value to unsigned before doing
the conversion to double.
Why did they comment out the cast to unsigned?
More information about the Comp.lang.c
mailing list