[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

Re: [LI] j = ++i * ++i * ++i



Hi there,

Might sound quite obvoius, but where can I get hold of C FAQ?

 Thanks,

   -Siddharth


From: "Pramode.C.E" <iclabs@xxxxxxxx>
Reply-To: linux-india@xxxxxxxxxxxxxxxxxxxxx
To: linux-india@xxxxxxxxxxxxxxxxxxxxx
Subject: Re: [LI] j = ++i * ++i * ++i
Date: Tue, 18 Jan 2000 13:35:12 +0400 (SCT)



On Tue, 18 Jan 2000, Aseem Rane wrote:

>
> if i is initialized to say 3,
>
> what will be the value of j, where
>
> j = ++i * ++i * ++i;
>
> on solaris
> using cc answer is
> j = 6 * 6 * 6;
>
> useing gcc answer is
> j = 4 * 5 * 6;
>
>
> but on linux (RH6.1 PCQ)
>
> j = 5 * 5 * 6;
>
> can anybody explain logic behind j's value on linux???
>
	Please refer C FAQ (i think questions 3.3,3.4 etc dealing
      with sequence points). K&R pp 52, 53, 54 is also relevant.
      Finally, you should try running some sort of lint on your
      code. You might try LCLint which is available from
     http://lclint.cs.virginia.edu/ftp/lclint/lclint-2.4b.src.tar.gz.
     Here is what lclint tells me about the code above:

	"Expression has undefined behaviour (left operand uses
         i, modified by right operand): ++i * ++i.
         Code has unspecified behaviour. Order of evaluation of
         function parameters or subexpressions is not defined, so
         if a value is used and modified in different places not
         separated by a sequence point constraining evaluation
         order, the result of the expression is unspecified."

							bye,
							pramode.


> bye
> aseem
>
>
>
> --------------------------------------------------------------------
> The Linux India Mailing List Archives are now available.  Please search
> the archive at http://lists.linux-india.org/ before posting your question
> to avoid repetition and save bandwidth.
>

--------------------------------------------------------------------
The Linux India Mailing List Archives are now available.  Please search
the archive at http://lists.linux-india.org/ before posting your question
to avoid repetition and save bandwidth.

______________________________________________________
Get Your Private, Free Email at http://www.hotmail.com

--------------------------------------------------------------------
The Linux India Mailing List Archives are now available.  Please search
the archive at http://lists.linux-india.org/ before posting your question
to avoid repetition and save bandwidth.