12
ループのどの時点で整数オーバーフローは未定義の動作になりますか?
これは、ここに投稿できないはるかに複雑なコードを含む私の質問を説明するための例です。 #include <stdio.h> int main() { int a = 0; for (int i = 0; i < 3; i++) { printf("Hello\n"); a = a + 1000000000; } } このプログラムにはa、3番目のループでオーバーフローするため、プラットフォームでの未定義の動作が含まれています。 それにより、プログラム全体の動作が未定義になりますか、それともオーバーフローが実際に発生したですか?コンパイラは、潜在的にそれが出て仕事ができるa だろう、それは未定義ループ全体を宣言し、彼らはすべてのオーバーフローが起こる前にもかかわらず、printfを実行する気にすることはできませんので、オーバーフロー? (CとC ++のタグは異なりますが、両方の言語が異なる場合は回答に興味があるためです。)