#20644 [Opn]: Incrementing/Decrementing booleans != boolean+1
| From: | philip@php.net | Date: | Wed, 27 Nov 2002 08:56:32 +0000 |
| Subject: | #20644 [Opn]: Incrementing/Decrementing booleans != boolean+1 | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-25940@lists.php.net to get a copy of this message | ||
ID: 20644
Updated by: philip@php.net
-Summary: in some cases ++ operation DOESN'T work
Reported By: yury@krasu.ru
Status: Open
-Bug Type: Documentation problem
+Bug Type: Scripting Engine problem
-Operating System: Win32, FreeBSD
+Operating System: all
-PHP Version: 4.2.1
+PHP Version: 4.3.0-dev
New Comment:
Please explain how this is to be documented (why this isn't a bug) as I
fail to understand the seemingly inconsistent behavior of this
example:
$t = true;
$a = $t + 1; (same as $t += 1; // 2)
$b = ++$t;
print "a: $a b: $b"; // a: 2 b: 1
In otherwords, incrementing/decrementing a boolean keeps it as boolean
while adding an integer, such as 1, changes it to an integer.
Reclassifying as a scripting engine problem so php-dev gets this
report. Please provide a documentable reason for this behavior.
Previous Comments:
------------------------------------------------------------------------
[2002-11-27 01:49:34] sniper@php.net
Reclassified.
------------------------------------------------------------------------
[2002-11-27 01:24:49] yury@krasu.ru
it was really an user error, sorry.
i found than "++" operator doesn't make type conversion from boolean to
int, and if variable is boolean and equals TRUE than after ++ it
remains as TRUE, so
$a = TRUE; echo ($a++).$a;
produces output "11"
this behavior of increment operator was unexpected to me and i suppose
that it can be the same to others, so i wrote an user note at "type
juggling" part at online documentation
------------------------------------------------------------------------
[2002-11-26 20:37:54] sniper@php.net
Not known and most likely user error. Please provide a reproducing
script.
------------------------------------------------------------------------
[2002-11-26 07:32:11] yury@krasu.ru
After installing PHP 4.2.1 in some time I noticed a strange bug:
at some situation increment operation (++) didn't work!
I failed to write a simple code to reproduce that bug (it occurs
regular at the same situation in nested functions of a rather big
project), but in short -
when trying to increment by ++ operation a function parameter, which
was setted to 1 as a default parameter value of upper function (which
called that function), incrementation does NOT happen.
and such code as
echo $newteamid;
$newteamid++;
echo $newteamid;
$a = $newteamid;
echo $a;
$a++;
echo $a;
produces an output: "1111"
but if I use " += 1" instead of "++" all works ok (and I was to make so
at my project)
as I mentioned I tried to reproduce that bug at simple code, but it
works ok in a short program with the same variables values.
and the same occurs at PHP 4.2.3.
if that bug is not known I can try to write an example for this (dont
wanna waste a time if it's well-known) but please confirm that
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=20644&edit=1