のこの本体を考えてみましょうmain
:
std::srand(std::time(nullptr));
while (std::rand());
驚いたことに、それが明確に定義されているかどうかについて、仕様、Google、またはこの Web サイトのいずれであっても、何も見つかりませんでした。スペックは:
N3485 § 6.5/4 [stmt.iter]は、条件について次のように述べています。
[ 注: 繰り返しステートメントの条件に関する要件は、6.4 で説明されています。— エンドノート]
しかし、6.4 を見てみると、このシナリオに言及しているものは何もありませんでした。理論的には、ループは事実上永遠に続く可能性がありますが、実際には、実行時間は通常 5 ミリ秒で、すべてのテスト実行で 1 回は 22 ミリ秒でした。
変化する (疑似) 乱数に基づいてループ終了条件を設定するのは、明確に定義された動作ですか? そうでない場合、それはどのような種類の動作ですか?