Re: C programming
Hi,
With your program, if you print out some values of x and y, you
can see that y become very very small after a couple of
iterations.
When y is too small, the following statement become true:
z = x+y, z == x because y is too small and is ignored due to the
fact that you declared z as double.
therefor, (z=x+y, z>x) and (x+y>x) are different looping
conditions.
if you declare z as long double z then it should give you the
same result.
Regards,
Shao.
Christophe TROESTLER [Ch.Troestler@linkline.be] wrote:
> Hi the list,
>
> I apologize if that is a little bit off topic but I am a bit puzzled
> and I know there are experts on this list. I would like an
> explanation on why the two "for" below give different results.
>
> Thanks,
> ChriS
>
>
> -.¸¸.·´¯`·.¸¸.-.¸¸.·´¯`·.¸¸.-.¸¸.·´¯`·.¸¸.-.¸¸.·´¯`·.¸¸.-.¸¸.·´¯`·.¸¸.-
>
>
> #include <stdio.h>
>
> main()
> {
> double x, y, z;
> int t;
>
> for(x=.5, y=1./4., t=1; z= x + y, z > x; y /=2, t++)
> ;
> printf("t=%i\n", t);
>
> for(x=.5, y=1./4., t=1; x+y > x; y /=2, t++)
> ;
> printf("t=%i\n", t);
> }
>
>
> --
> Unsubscribe? mail -s unsubscribe debian-user-request@lists.debian.org < /dev/null
>
>
--
____________________________________________________________________________
Shao Zhang - Running Debian 2.1 ___ _ _____
Department of Communications / __| |_ __ _ ___ |_ / |_ __ _ _ _ __ _
University of New South Wales \__ \ ' \/ _` / _ \ / /| ' \/ _` | ' \/ _` |
Sydney, Australia |___/_||_\__,_\___/ /___|_||_\__,_|_||_\__, |
Email: shao@cia.com.au |___/
_____________________________________________________________________________
Reply to:
- References:
- C programming
- From: Christophe TROESTLER <Ch.Troestler@linkline.be>