C++循环初始化的奇怪行为

C++ strange behavior of a for cycle initialization

本文关键字:循环 初始化 C++      更新时间:2023-10-16

我注意到一个 for 循环的奇怪行为......

案例1:

让我们有一个 i 变量的内部初始化

for ( int i=10; i <=10; i++)
{
    std::cout << i;
}
return 0;

输出:

10

案例2:

现在我们在循环之外初始化 i

int i = 10;
for ( ; i <=10; i++)
{
    std::cout << i;
}
return 0;

输出:

Nothing will be print

案例3:

初始化任何与 i 无关的变量:

int i = 10;
for ( int k = 0 ; i <=10; i++)
{
    std::cout << i;
}
return 0;

输出:

10

问题

循环条件的结果如何取决于我们初始化变量 i 的位置?

更新的结果

我使用 degugger 跟踪了一个代码,VS 2010 在案例 2 中确实跳过了一个循环。然而,g++运行良好。也许编译器中的错误?

未婚期结果重新启动后,它可以正常工作。天地之间的东西。对不起,这个无用的问题....

如果情况 2 没有打印10则编译器中存在错误或输出未刷新。同时向输出添加<< "n"

第二个也打印10。如果没有,则编译器中存在错误,或者您使用了错误的编译器。

我在http://ideone.com/UB0V0中运行了相同的代码。 你可以看看它。 它打印10