#include <u.h>
#include <libc.h>
void
main(void)
{
double g = 4215866817.;
print("%d\n", (unsigned int)g);
print("%d\n", (unsigned int)g);
exits("");
}
8c r.c
8l r.8
./8.out
-79100479
-79100479
no trap. it generates different code.
(obviously the %d should be %ud in this case, giving
doppio% 8.out
4215866817
4215866817
which looks like the right answer
the cast must be to an unsigned integer.
otherwise the resulting range is signed,
and that's more limited
