私は周りを見回して式を見つけましa = (a + b) - (b = a)
た.2つの変数(または場合によってはオブジェクト)を交換することになっています。ただし、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
コードは同じように見えますが、出力が異なります。私は 2 つの理由について考えてきました。
- C++ コードはコンパイル中で、php は解釈中です。
- この式は、未定義の動作につながるため役に立ちません。
この状況で C++ と php の出力が異なる理由を誰かが説明できますか?