RE: RES: inexplicable behaviour SOLVED

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 27 April 2009 14:21, PJ advised:

> Ford, Mike wrote:
>> On 26 April 2009 22:59, PJ advised:
>> 
>> 
>>> kranthi wrote:
>>> 
>>>> if $Count1 is never referenced after this, then certainly this
>>>> assignment operation is redundent. but assignment is not the ONLY
>>>> operation of this statement. if u hav not noticed a post increment
>>>> operator has been used which will affect the value of $Count as
well,
>>>> and this operation is required for the script to work.
>>>> 
>>>> the script should work even if u replace
>>>> $Count1 = $Count++;
>>>> with
>>>> $Count++;
>>>> 
>>>> Kranthi.
>>>> 
>>>> 
>>>> 
>>> Not quite, since that would change the $Count variable and that is
used
>>> leater in the code.
>>> 
>> 
>> Um -- I must be missing something here, because those two statements
>> have exactly the same effect on $Count, incrementing it by one (and
you
>> said the first statement fixed your problem, so logically the second
one
>> must too). 
>> 
>> In fact, because you've used a post-increment, the statement
>> 
>>    $Count1 = $Count++;
>> 
>> ends up with $Count == $Count1+1, and $Count1 being the original
value
>> of $Count!! 
>> 
>> This whole scenario smacks to me of a classic "off-by-one" error --
>> either $Count actually *needs* to be one greater than the value you
>> first thought of, or some other value you are comparing it to should
be
>> one smaller than it actually is.
>> 
>> Cheers!
>> 
>> 
> Thanks for the clarification, Mike. In my ignorance, I was under the
> impression that the right side of the equation was only for the use of
> the left part. How stupid of me. So what I should have been doing was
> $Count1 = $Count + 1; right?

No -- because, as you stated, $Count1 was not referred to anywhere else,
so there was and would have been no usefulness in assigning any value to
it.  You could equally well have said $Count1 = 2.71828 + 3.14159 *
$Count++; and got the same result -- because this still increments
$Count by 1, and anything else the statement does is irrelevant if
$Count1 is never referred to anywhere else!!! ;) ;)

What you did worked because $Count++ *always* adds one to the value of
$Count, no matter where it appears -- the crucial part of your original
statement was the $Count++ bit, with the assignment to $Count1 being a
massive red herring.

For ultimate clarification, the following 4 statements all have
identical effect:

   $Count = $Count + 1;
   $Count += 1;
   $Count++;
   ++$Count;

and any one of them would have had the same effect on your result. This
is why I say it was an off-by-one error -- your programming logic
somehow *needed* $Count to be 1 greater than you thought it did, so the
inadvertent incrementation of it was doing the trick for you.

Hope this helps increase the illumination in your head a tiny bit more.

Cheers!

Mike

 --
Mike Ford,  Electronic Information Developer,
C507, Leeds Metropolitan University, Civic Quarter Campus, 
Woodhouse Lane, LEEDS,  LS1 3HE,  United Kingdom
Email: m.ford@xxxxxxxxxxxxxx
Tel: +44 113 812 4730


To view the terms under which this email is distributed, please go to http://disclaimer.leedsmet.ac.uk/email.htm

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php



[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux