私はc ++を学んでいますが、最近、紛らわしい問題に遭遇しました。コードは次のとおりです。
#include <iostream>
using namespace std;
class A {
public:
A() { a[0] = 1; a[1] = 0; }
int a[2];
int b(void) { int x=a[0];a[0]=a[1];a[1]=x; return x; }
};
int main(void) {
A a;
cout<<a.a[0]<<a.a[1]<<endl; //outputs 10
a.b();
cout<<a.a[0]<<a.a[1]<<endl; //outputs 01
a.b();
cout<<a.a[0]<<a.a[1]<<endl; //outputs 10
cout << a.b() << //outputs 1
endl<< a.a[0]<<a.a[1] << endl; //outputs 10???
cout<<a.a[0]<<a.a[1]<<endl; //outputs 01???
return 0;
}
b() の最初の 2 つの呼び出しは期待どおりに動作しますが、cout ステートメント内で b() を呼び出すと、配列の 2 つの要素がすぐに切り替えられませんが、後で確認すると、既に切り替えられています。
この動作を理解するのを手伝ってもらえますか? ありがとうございました。