Date: Fri, 25 Nov 1994 19:16:07 -0500 (EST) From: Kimberley Burchett Subject: -1441992/4 = 1073381326 To: DJGPP Mailing List This program: int main() { long x = -1441992; unsigned y = 4; printf("%d / %d = %d\n",x,y,x/y); } Spits this out: -1441992 / 4 = 1073381326 The division is done at compile time if I compile with optimizations on. A more complex program where the division can't be done at compile time gets the same result doing the division at run time. Can anyone tell me why? As far as I know, even in the strange world of CPU math, overflows can't account for this result. The only thing I can think of is that the compiler is using DIV instead of IDIV (however, in this case, dividing by 4, it shouldn't use any DIV). The funny math only shows up when x is negative (never tried y negative...). It doesn't matter whether I'm using the C or the C++ compiler. For Those Who Care: I found this little glitch when for some reason a program I was trying to write kept making little "birds" zip off the screen - I was using this to calculate delta x's and y's. Two or three hours of debugging and now I'm a lot more comfortable with gdb. Kimberley