пачатковец C «==» заўсёды мае значэнне хлусня

Толькі пачатковец пытанне. Я спрабаваў знайсці адказ на гэтае пытанне, але я не мог.

чаму

for (int i = 0;i==10;++i) {
/* body of the for loop */
}

Ніколі не выконвае цела для цыкла? але гэта працуе?

for (int i = 0;i<=10;++i) {
/* body of the for loop */
}

(Я == 0) павінна быць лагічны выраз, вылічае ў хлусьню, калі я == 0, праўда? Гэта выдатна працуе, калі я стаўлю гэты выраз у заяве, калі як

for(int i=10;;++i) {
if (i==10) break;
}

Дзякуй!

0
Яна мае толькі ацаніць хлусня адзін раз цыкл, каб спыніць.
дададзена аўтар Don Roby, крыніца

6 адказы

C ++ 101 Сярэдні стан павінна быць дакладна і для цыкла, каб працягнуць.

3
дададзена
Дзякуй! Зразумела! Гэта быў дурны пытанне! Дзякуй!
дададзена аўтар bender, крыніца

Для цыклу ў асноўным азначае працягвацца да таго часу, пакуль сярэдняе ўмова праўдзіва.

Такім чынам, цыкл, у гэтым выпадку будзе толькі працягвацца, калі я == 10. Што гэта не таму ён спыняецца.

2
дададзена

Паколькі ўмова ў першым цыкле гаворыць толькі павялічвае, калі я роўна 10. Вы можаце ўсталяваць я 0, таму ён ніколі не будзе павялічвацца, таму што ён не мае магчымасцяў патрапіць туды.

Другі адзін працуе, таму што вы кажаце я роўна 0, і ў той час як я менш або роўна 10, то павялічваецца на 1. 0 менш, чым 10, але не роўная ёй.

1
дададзена
for (int i = 0; ;++i) {
/* body of the for loop */
}

Ключ да разумення гэтага з'яўляецца тое, што цела выконвае кожны раз, калі <�ет> ўмова дае TRUE. У вашым прыкладзе, ён вылічае сам ХЛУСНЯ першы раз, і, такім чынам, нічога не выконвае.

У вашым другім прыкладзе, ўмова апушчана. Гэта азначае, што цела выконвае назаўжды, пакуль вы не вырвацца з яго. Што вы робіце, калі я == 10. Такім чынам, цела выконвае ў 10 разоў.

0
дададзена
Ваш адказ мае тыя ж праблемы Эйдана зрабіў. Ваша фармулёўка ўводзіць у зман. Яго не «кожны раз, калі ....», таму што калі б гэта было, цыкл Аскер быў бы працаваць кожны раз, калі х == 10 . Больш дакладна, прагоны цыкл "пакуль" ці "а" contition з'яўляецца True .
дададзена аўтар Mr Universe, крыніца
Дзякуй! вельмі падрабязнае тлумачэнне!
дададзена аўтар bender, крыніца
        for (int i = 0;i==10;++i) {
         /* body of the for loop */
        }

для гэтага кода я = 0 на пачатковым этапе, калі ўмова правяраецца (I == 10) гэта прыводзіць да ілжывым, так цыкл ня ітэрацыю.

Уважліва праверце, што значэнні г вы хочаце, каб запусціць цыкл.

напрыклад, ваш цыкл можа быць

     for (int i = 0;i<=10;++i) {
       /* body of the for loop */
      }

цела цыклу будзе ітэрацыя ад 0 да 10, уключаючы абодва.

0
дададзена

<�Код> для (, праўда;)
{
        // гэта бясконцы цыкл
}

Ўмова павінна быць дакладна для таго, каб увайсці ў пятлю, у вашым выпадку я == 10 вяртае ілжывыя, такім чынам, яна не ўваходзіць у контур.

0
дададзена