我一直在寻找并找到了一个公式:
这段代码输出
这段文本的意思是:
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 的输出不同吗?