我無法理解爲什麼在此代碼段中打印出「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