erwit
#cpp #programowanie

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?
  • Najlepsze
  • Wszystkie komentarze
C.....7
C.....7
@erwit: Bez średnika if też jest w pętli. Ze średnikiem nie ma go w niej.
tommer91
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.
p.....k
p.....k
@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
progresywnyRegres
progresywnyRegres
@erwit: bo taki jest warunek w pętli, dochodzi do 9 wiec nie spełnia warunku i z niej wychodzi.
Waffenek
@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.
progresywnyRegres
progresywnyRegres
@erwit: tak jak wyżej radzą używaj klamr i wcięć wtedy będzie czytelniej i bardziej zrozumiale

wersja ze średnikiem:

for (; k < 9; k = k +
mojwa
@erwit: bo najpierw zwiększasz, a dopiero potem następuje sprawdzenie czy k jest mniejsze od 9.
erwit
erwit Autor
0
@przxmek: @Waffenek: @tommer91: @Cake7: dzieki, musze to przeanalizowac
erwit
erwit Autor
0
@progresywnyRegres: to jest przykladowe pytanie z testu, trzeba odpowiedziec jaki wynik da kazdy z kodow
erwit
erwit Autor
0
@tommer91: dlaczego zwiekszam k do 9, kiedy tam jest napisane, ze k musi byc mniejsze od 9?
erwit
erwit Autor
0
@mojwa: ok, a skad mam wiedziec ze nalezy zwiekszyc wlasnie do 9?
erwit
erwit Autor
0
@progresywnyRegres: kminie! Dzieki wielkie :)
erwit
erwit Autor
0
@mojwa: Dzieki