Pętla while wykonywanie instrukcji w warunku.

0

Witam. Mam dość podstawowe pytanie, nie do końca mogę zrozumieć jak to działa. W internecie też ciężko mi znaleźć to o czego szukam, bo nie wiem jak to w sumie wpisać:
Mam taki kod:

 
char * abc = "Arek";
int p = 0;
char * root = abc;

while(*(abc++)) p++;

No i nie mogę tutaj zrozumieć, czemu abc wyjeżdża mi adresem o jeden znak za null, czyli jak tutajmam Arek ma 4 znaki to root - abc = 5, a p = 4.?
Jak to się wykonuje, że abc przelatuje dwa znaki, a "p" nie jest inkrementowane?

0

Bo kiedy *abc==0 to jeszcze robisz ++

0

Czyli tak dochodzi do while...to najpierw go zwiększa, potem dopiero sprawdza?

2

@andrzejbodziuzbychujarek no najpierw trzeba WYLICZYĆ wartość wyrażenia zeby ją z czymś porównać. A ze akurat u ciebie to wyliczanie zawiera zmianę wartości to już twoja sprawa.

0

aha, no wlasnie o to mi chodzilo...

2

Tak przy okazji, od C++11 to nie jest poprawny kod i nie powinien się kompilować. Literały znakowe przypisuj albo do char const* albo do char[] (jeśli inicjalizujesz nową tablicę).

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