21,886
社区成员
发帖
与我相关
我的任务
分享
($a + $a++);
//由执行顺序
//1、$a++
//2、$a
//再由
$a = 1;
$b = $a++;
echo($a.'-'.$b);
//结果$a为2, $b为1 即($a++)结果为1;
//所以$a + $a++ = 2+1 为3
//式1
$b = $a + ($a + ($a + ($a + $a++)));
//执行顺序
//1、($a + $a++)
//2、($a + ($a + $a++))
//...括号优先
//因为1先被执行,所以$a变量值被改变了,后面的顺序执行都会按改变的值计算
//结果:$b = 2 + (2 + (2 + (2 + 1)));
//式2
$b = $a + $a + $a + ($a + $a++);
//等同于$b = (($a + $a) + $a) + ($a + $a++);
//执行顺序
//1、($a + $a)
//2、($a + $a) + $a)
//......括号优先,相同符号 不加括号顺序执行
//执行结果为$b = 1+1+1+($a + $a++) 即$b=3+(2+1)
//最后
$b = $a+$a++;//等同 式1
$b = $a+$a+$a++;//等同 式2
#include "stdio.h"
#include "conio.h"
main()
{
int a=1,b=1;
printf("%d %d\n", a+a++, b+b+b++);
getch();
}
3 3
按语法说明
$b = $a + $a + $a++;
得到 3 是符合规则的
而 $c = $d + $d++; 得到 3 是不符合规则的
因此,将 ++ 和 + 混合使用,并不能一定得到预期的结果