我一直在寻找公式:a = (a + b) - (b = a)
它应该交换两个变量(或在某些情况下是对象)。但是我用 C++ 和 php 对其进行了测试,这些给了我不同的结果。
php:
$a = 10;
$b = 20;
$a = ($a + $b) - ($b = $a);
echo $a, " ", $b;
这打印20 10
C++
int a = 10;
int b = 20;
a = (a + b) - (b = a);
std::cout << a << " " << b;
这打印10 10
代码看起来一样但输出不同,我一直在考虑两个原因:
- C++ 代码正在编译,而 php 正在解释。
- 这个公式是无用的,因为它会导致未定义的行为。
有人可以解释一下,为什么 C++ 和 php 输出在这种情况下会有所不同?