我有以下代码片段:
foo();
std::cout << "Foo";
loop();
其中 loop
是一个不会终止的函数,因为它运行到某个无限循环中(不是故意的)。但是,似乎我的程序在不打印输出(“Foo”)的情况下运行到无限循环中。是否允许编译器以这种方式更改代码的行为?
foo()
和 loop()
都不会干扰标准输出。
很遗憾,我无法提供有关设置的更多具体信息。所以我只想知道在调用 loop()
之前是否需要有一个错误(在代码或编译器中),或者编译器是否可以假设后面的代码没有错误?
编辑:此行为的原因可能是缺少 std::flush
。因此,最初的问题对我来说不再那么有趣(但它可能仍然是一个可以问的问题)。