Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!think.com!spool.mu.edu!uwm.edu!lll-winken!xanth!cs.odu.edu!kremer From: kremer@cs.odu.edu (Lloyd Kremer) Newsgroups: comp.lang.c Subject: Re: HELP! Need *detailed* list of Microsoft C 5.1 -> 6.0 changes Keywords: Silent introduction of BUGS Message-ID: <1991Jun28.124443.27333@cs.odu.edu> Date: 28 Jun 91 12:44:43 GMT Article-I.D.: cs.1991Jun28.124443.27333 References: <1991Jun28.030934.10935@Octopus.COM> Sender: news@cs.odu.edu (News File Owner) Organization: Old Dominion University, Norfolk, VA Lines: 27 Nntp-Posting-Host: wisteria.cs.odu.edu In article <1991Jun28.030934.10935@Octopus.COM> pete@octopus.COM (Pete Holzmann) writes: >We just discovered that Microsoft has silently ANSI-fied "thousands" of >things in their C compiler in moving from version 5.1 to 6.0 I think I found one by accident. Floats no longer automatically promote to doubles on evaluation. Instead the resulting type depends on which type comes first in the SOURCE code! For example: float f; double d; sizeof(f) == 4 sizeof(d) == 8 sizeof(f + d) == 4 sizeof(d + f) == 8 Any other arithmetic operator works the same. This may be an unwanted side effect of their change to let floats be passed to ANSI-defined functions taking a float parameter. However, I noticed that for old-style argument passing floats are still passed on the stack as doubles, if that's any consolation. Lloyd Kremer Hilton Systems, Inc. kremer@cs.odu.edu