为什么是1+++;1在php中计算为2?

为什么是1+++;1在php中计算为2?,php,math,operators,addition,signed,Php,Math,Operators,Addition,Signed,谁能解释一下为什么这个代码会打印2 $var = 1 + + + 1; echo $var; 这是基础数学。你所计算的基本上是 1 + (++1) 加号(不是加号运算符)是可选的。所以只是 1 + (1) 这是2 如果执行1++-1操作,结果将为0,因为您正在计算 1 + (+-1) 1 + (-1) 和+和-可以缩短为- 那么你是在计算 1 + (+-1) 1 + (-1) 或者只是 1 - 1 参考文献 如您所见,+符号可以有两种不同的含义。第一个是“身份”,第二个是“添

谁能解释一下为什么这个代码会打印
2

$var = 1 + + + 1;
echo $var;

这是基础数学。你所计算的基本上是

1 + (++1)
加号(不是加号运算符)是可选的。所以只是

1 + (1)
这是2


如果执行
1++-1
操作,结果将为0,因为您正在计算

1 + (+-1)
1 + (-1)
和+和-可以缩短为-

那么你是在计算

1 + (+-1)
1 + (-1)
或者只是

1 - 1

参考文献 如您所见,
+
符号可以有两种不同的含义。第一个是“身份”,第二个是“添加”

算术运算符
示例名称结果
+$a将$a的标识转换为int或float(视情况而定)。
-$a与$a相反的否定。
$a+b加上$a和$b的总和。
这意味着

1+++1
^ ^ ^ ^ ^
|| | | `-int
|| |`-标识运算符
||`-标识运算符
|`—加法运算符
`-int
参考

如果php有两个实体要执行算术/数学运算,它将优先处理该操作,而不是标识/否定。当两个实体之间已经确定数学运算或只有一个实体时,
+
-
符号将被视为身份/否定运算符

代码:()

输出:

4
-5
6
-7
8
非加号/非减号运算符(即:
*
/
%
**
)只有一个解释,因此在已确定先前的数学运算时会导致分析错误

悬挂的右侧算术运算符不能用作加法、减法、恒等式、求反等,因此会导致分析错误。例如
8---

此外

echo 1 + - 2;     // -1  (1 plus neg 2)
echo "\n";
echo 1 - + 2;     // -1  (1 minus pos 2)
echo "\n";
echo 1 + - - 3;   //  4  (1 plus neg neg 3)
echo "\n";
echo 1 - + + 3;   // -2  (1 minus pos pos 3)
echo "\n";
echo 1 - - - 3;   // -2  (1 minus neg neg 3)
echo "\n";
echo 1 + + + 3;   //  4  (1 plus pos pos 3)
echo "\n";
echo 1 + + - - 4; //  5  (1 plus pos neg neg 4)
echo "\n";
echo 1 - - + + 4; //  5  (1 minus neg pos pos 4)
echo "\n";
echo 1 - - - - 4; //  5  (1 minus neg neg neg 4)
echo "\n";
//echo 1 - - * + 4;  // parse error
//echo "\n";

$var=1+(+(+1))
那些
+
(第一个除外)被视为一元运算符。你是否期望那些古怪的代码有什么古怪的东西?你期望得到什么结果?你到底得到了什么结果?你认为实际结果令人困惑的是什么?请在问题的主体部分告诉我们这一点,并将标题作为一个简短的摘要。我有一个错误,基本数学并不总是转化为编程。想想
X=X+1
@Progrock,但在这种情况下确实如此。这只是一个假设,除非您可以引用。@Progrock我为youIdentity添加了一个很好的引用,这有点误导,因为可能会发生强制。可能最好称为一元加号。这个怎么样:
$var=-10;echo$var结果为10。那些零在哪里?对,你在。事实上,研究并完全重写了答案,“两件事加/减”,有点含糊不清。我相信这一部分很直截了当,但当引入递增和递减时,它就变成了梨形。我想发布一个链接到一个我曾经评论过的页面,关于像
++$x++$y
之类的表达式,但我找不到。是的,我肯定是把它简化了。