Co oznacza i*=2 ? Pętla while

Co oznacza i*=2 ? Pętla while

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

FA
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
#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.

kq
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Szczecin
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

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.