Wpis z mikrobloga

#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?
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

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.
  • Odpowiedz
@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.
  • Odpowiedz
@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
  • Odpowiedz