-2

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

情况1:

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

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

输出:

10

案例二:

现在我们在循环外初始化 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++ 运行良好。也许编译器中的错误?

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

4

2 回答 2

0

如果案例 2 未打印10,则说明您的编译器存在错误或未刷新输出。也将 a 添加<< "\n"到输出中。

于 2012-08-17T10:42:49.643 回答
0

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

我已经在http://ideone.com/UB0V0. 你可以看看它。它打印10

于 2012-08-17T10:48:12.513 回答