为什么这个代码在echo 2的下面并没有给出错误,它是否只是忽略+1+2+3+4
?
我搜索过但找不到答案。
<?php
$i = 1;
$i+++1+2+3+4;
echo $i;
答案 0 :(得分:14)
那一行:
scalavars.ExchangeValue = str(float(scalavars.CurrencyAmount) / float(scalavars.Rate))
表示:
$i+++1+2+3+4;
$i
pre 增量的值添加到$i
,但不将结果存储在任何位置。因此+1+2+3+4
。
如果您不希望忽略它,则应存储结果:
$i == 2
答案 1 :(得分:2)
一切都很好。您刚忘记了作业,因此i
仅受++
运营商影响:
<?php
$i = 1;
$x = $i+++1+2+3+4;
echo "{$i} vs "{$x}";
将返回
2 vs 11
答案 2 :(得分:2)
您永远不会在任何地方分配已完成的操作:
这两个在功能上是等价的:
$i++;
$i = $i + 1;
两者都会将$i
增加1,并将该增量值保存在$i
使用$i+++1+2+3+4
您实际上正在执行
($i++) + 1 + 2 + 3 + 4
是
$i = $i + 1;
1 + 2 + 3 + 4; // useless, result not stored anywhere
将$i
增加1,将其保存到$i
,然后执行其他添加。但由于这些都没有被保存在任何地方,结果就会被抛弃。
如果你有
php > $i = 1;
php > $i = $i+++1+2+3+4;
^^^^^----add this
php > echo $i;
11
然后它会像你期望的那样工作。
答案 3 :(得分:1)
$i++
表示向$i
添加1
和python类似,+1+2+3+4
意味着将$i
预增量的值添加到+1+2+3+4
但不存储在任何地方。(因此没有内存地址或类似的东西......)。
所以你得到的只是$i==2