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

时间:2012-08-17 10:37:43

标签: c++

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

案例1:

让我们对i变量进行内部初始化

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

输出:

10

案例2:

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

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在第二种情况下跳过一个循环。 但是g ++运行良好。 也许是编译器中的错误?

Fianal结果 重新启动后,它可以正常工作。天地之间的东西。 抱歉这个无用的问题......

2 个答案:

答案 0 :(得分:0)

如果案例2未打印10,则编译器中存在错误或输出未被刷新。也可以在输出中添加<< "\n"

答案 1 :(得分:0)

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

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