私は大学のコースのために C でアプリケーションを書いています。アプリケーションのセクションで、整数を繰り返し増やしています。printf ステートメントを使用すると、int1 が 20 に増加していることがわかりますが、実行は失敗します。なぜそうなのか知りたいのですが?
int main() {
int i,int1=0, int2=0;
for (i = 0; i<10; i++) {
int1 = (int2 + 2);
int2 = int1;
}
}
プログラムは、ANSI C とインライン化する必要があります。
int1 = (int2 + 2);
コンパイラは「同じ」変数のどれが最初に処理されるかを保証できないため、未定義の動作です。(ただし、間違っている場合は訂正してください!) そのため、より長い方法を使用しましたが、アプリケーションはどちらの方法でも同じように失敗します。
これが失敗する理由は何ですか?