Re: RES: inexplicable behaviour SOLVED

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

 



Ford, Mike wrote:
> 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.
>   
Indeed, it does. Thanks.

-- 
Hervé Kempf: "Pour sauver la planète, sortez du capitalisme."
-------------------------------------------------------------
Phil Jourdan --- pj@xxxxxxxxxxxxx
   http://www.ptahhotep.com
   http://www.chiccantine.com/andypantry.php


-- 
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