Wątek przeniesiony 2016-11-13 23:57 z C/C++ przez ŁF.

Co oznacza i*=2 ? Pętla while

0
#include <stdio.h>

int main()
{
    int i = 1;

    while (i <10)
        i *= 2;
    i++;

    printf("%d", i);
}

Czy wie ktoś w jaki sposób działa ta pętla ? Bo nie do końca wiem dlaczego zwraca ona wartość 17 na końcu swojego działania.

5

i*=2 jest analogiczne dla i = i*2 (pomijając jednokrotną ewaluację i).

Tak więc pętla podwaja i dopóki i jest mniejsze (przed podwojeniem) od 10. Tak więc po wyjściu z pętli i jest równe 16. Następnie inkrementujesz i, ustalając jego ostateczną wartość - 17

1 użytkowników online, w tym zalogowanych: 0, gości: 1