Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!usc!sdd.hp.com!spool.mu.edu!uunet!island!shahriar From: shahriar@island.COM (Shahriar Vaghar) Newsgroups: comp.sys.mac.programmer Subject: MPW C ver. 3.2b1 bug Keywords: type conversion Message-ID: <3923@island.COM> Date: 15 Apr 91 17:06:47 GMT Distribution: usa Organization: Island Graphics, Marin County, California Lines: 59 /* cc -mc68881 -elems881 -mc68020 unsigned.c Link -w -c 'MPS ' -t 'MPST' unsigned.c.o 6 -sn STDIO=Main 6 -sn INTENV=Main 6 -sn %A5Init=Main 6 "{Libraries}"Stubs.o 6 "{CLibraries}"CLib881.o 6 "{CLibraries}"CRuntime.o 6 "{CLibraries}"StdCLib.o 6 "{CLibraries}"CInterface.o 6 "{CLibraries}"Math881.o 6 "{CLibraries}"CSANElib881.o 6 "{Libraries}"Interface.o 6 -o unsigned The following program produces correct result when compiled with MPW C 3.1. But produces wrong output when compiled with MPW C 3.2b1. Mac IIfx running 6.05. */ #include unsigned char red[10]; unsigned char green[10]; main() { int v; for (v = 0; v < 10; v++) { double val; val = ((double)v / 255.); red[v] = (int) (255. * val); /* ???? */ green[v] = 255. * val; /* ???? */ fprintf(stderr,"red[%d] = %d", v, red[v]); fprintf(stderr, " "); fprintf(stderr,"green[%d] = %d", v, green[v]); fprintf(stderr, "\n"); } } /* Output: red[0] = 0 green[0] = 0 red[1] = 0 green[1] = 0 red[2] = 0 green[2] = 1 red[3] = 0 green[3] = 2 red[4] = 0 green[4] = 3 red[5] = 0 green[5] = 4 red[6] = 0 green[6] = 5 red[7] = 0 green[7] = 6 red[8] = 0 green[8] = 7 red[9] = 0 green[9] = 8 */