我无法理解为什么在此代码段中打印出“Hello”语句不是 。我认为for循环中的条件语句仅在第二次迭代后才开始测试。循环C++的奇怪行为
for (count = 0; count < 0; ++count)
{
cout<<"Hello!\n";
}
我无法理解为什么在此代码段中打印出“Hello”语句不是 。我认为for循环中的条件语句仅在第二次迭代后才开始测试。循环C++的奇怪行为
for (count = 0; count < 0; ++count)
{
cout<<"Hello!\n";
}
它从来没有进入循环,因为for
循环在开始时进行了测试。
您从count = 0
开始,但循环条件为count < 0
。所以它立即失败并跳过整个循环。
do-while
循环是在迭代结束时进行测试的循环。
我认为,在后只在第二次迭代
for循环开始变得 测试的条件语句不,它不需要。它已在第一次迭代之前进行检查。
的for
循环:
for (count = 0; count < 0; ++count)
{
cout<<"Hello!\n";
}
被定义为等同于:
{
count = 0;
while (count < 0)
{
{
cout<<"Hello!\n";
}
++count;
}
}
需要提醒的是continue
会去++count
,而不是count < 0
。
另外一组括号删除了注意事项 –
@Minging Duck:谢谢(修复)!任何对破碎版本感兴趣的人都可以看看Matthieu M.的回答。 – Mankarse
首先测试条件。
一个for
环
for (<initializer>; <condition>; <increment>) { <body> }
等同于:
{
<initializer>
bool __first = true;
while ((__first ? __first = false : (<increment>, true)), <condition>) {
<body>
}
}
唯一的循环结构总是一次迭代是:
do {
<body>
} while (<condition>);
你是否真的认为那些为'for'循环挣扎的人会被这种条件和逗号操作符的无故使用所帮助? – Mankarse
@Mankarse:不是真的,但我想这会帮助他理解'for'提供的语法糖。用'if'后面加上'do/while'表示它可能会更容易。 –
阅读本文档 - HTTP:// WWW .cplusplus.com/doc/tutorial/control/ – adatapost
零很小,但不小于它自己。 – kenny