考虑这个身体main
:
std::srand(std::time(nullptr));
while (std::rand());
令人惊讶的是,无论是在规范中、在 Google 上还是在这个网站上,我都找不到任何关于这是否定义明确的信息。至于规格:
N3485 § 6.5/4 [stmt.iter]说明了这种情况:
[注:迭代语句中的条件要求见6.4。——尾注]
但是,通过 6.4,我没有看到任何与这种情况相关的内容。理论上,循环实际上可以永远持续下去,但在实践中,我通常有 5 毫秒的运行时间,所有测试运行中的一次是 22 毫秒。
将循环终止条件基于不断变化的(伪)随机数是否是明确定义的行为?如果不是,那是哪种行为?