我注意到了一个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结果 重新启动后,它可以正常工作。天地之间的东西。 抱歉这个无用的问题......
答案 0 :(得分:0)
如果案例2未打印10
,则编译器中存在错误或输出未被刷新。也可以在输出中添加<< "\n"
。
答案 1 :(得分:0)
第二个也打印10
。如果不存在,则编译器中存在错误,或者您使用的是错误的编译器。
我在http://ideone.com/UB0V0
中运行了相同的代码。你可以看到它。它会打印10