From: "Martin Ambuhl" Newsgroups: comp.os.msdos.djgpp Subject: Re: printf bug ??? Date: Sat, 6 Jun 1998 02:15:34 -0400 Organization: Nocturnal Aviation Lines: 37 Message-ID: <6laq8j$mu2@news-central.tiac.net> References: <35784752 DOT B7BF8C31 AT hamburg DOT netsurf DOT de> NNTP-Posting-Host: p30.tc3.newyo.ny.tiac.com To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk Dennis Voss wrote in message <35784752 DOT B7BF8C31 AT hamburg DOT netsurf DOT de>... :Hi there, : :I just wrote this little program: :#include :void main(void) :{ : int i = 1; : printf("%d %d %d", i, i++, i++); :} :Using DJGPP I got the output "3 2 1" which is wrong. :I also compiled this with Visual C++ 5 and the output was "1 1 1". :Can anyone help me solve this? ============ When you violate the standard, and produce code that by definition has undefined behavior, expect to get undefined behavior. From 6.3 of the standard: "Between the previous and next sequence point, an object shall have its stored value modified at most one be the evaluation of an expression. Furthermore, the prior value shall be accessed only to determine the value to be stored." and from 6.3.2.2 "The order of evaluation of the function designator, the arguments, and subexpression within the argument is unspecified, but there is a sequence point before the actual call." If you don't understand just how badly you violated the standard, get the comp.lang.c FAQ from ftp://rtfm.mit.edu/pub/usenet-by-group/comp.lang.c ===================== : :Dennis Voss :