Spróbuj lecieć linijka po linijce. Jak jest średnik po nawiasie (rozumiem że pętli for) to w pętli zwiększasz k do 9, potem wykonuje się to co za ifem, czyli 9, a potem znowu 9.
Jak po pętli nie ma średnika, to if jest w pętli, dlatego wypisje najpierw 5, potem 7, a następnie po wyjściu z pętli wypisjue 9.
@erwit: Wydaje mi się że ten średnik wymusza "zamknięcie" fora. Bez niego
"if (k%2 != 0)
cout << k;"
Znajduje w pętli. Możliwość robienia pętli bez nawiasów skraca kod i przyśpiesza pisanie ale na początek polecałbym jednak dawać nawiasy wszędzie gdzie tylko można.
@erwit: powinieneś użyć {...} żeby wydzielić część kodu zawartą w forze. Jeśli w forze masz tylko 1 instrukcję obejdzie się bez klamerek, ale jeśli dowalisz ten średnik po forze to tak jakby instrukcja w forze była pusta. a te couty są już za forem.
edit: to się tyczy także ifa i zagnieżdża w tym przypadku
Dlaczego wynik tego:
#include
using namespace std;
int main()
{
int k = 4;
for (; k < 9; k = k + 1);
if (k%2 != 0)
cout << k;
cout << k;
return 0;
}
to 99
podczas gdy ten sam kod tyle ze bez srednika po nawiasie for daje 579?
Jak po pętli nie ma średnika, to if jest w pętli, dlatego wypisje najpierw 5, potem 7, a następnie po wyjściu z pętli wypisjue 9.
"if (k%2 != 0)
cout << k;"
Znajduje w pętli. Możliwość robienia pętli bez nawiasów skraca kod i przyśpiesza pisanie ale na początek polecałbym jednak dawać nawiasy wszędzie gdzie tylko można.
edit: to się tyczy także ifa i zagnieżdża w tym przypadku
wersja ze średnikiem:
for (; k < 9; k = k +