Wiem że to dla niektórych proste ale mam zagadkę
int n=5,p=10,q=5,r=1;
r=p--==++q+4;
Czy ktoś byłby w stanie wytłumaczyć mi co tutaj się dzieje? Może z użyciem nawiasów i jakoś krokowo? Czym się różni zapis ++q od q++ na tym przykładzie?
Wiem że to dla niektórych proste ale mam zagadkę
int n=5,p=10,q=5,r=1;
r=p--==++q+4;
Czy ktoś byłby w stanie wytłumaczyć mi co tutaj się dzieje? Może z użyciem nawiasów i jakoś krokowo? Czym się różni zapis ++q od q++ na tym przykładzie?
Podglądnij sobie plik z assemblerem. W opcjach kompilatora gdzieś to jest żeby generowało. Tam masz wszystko ładnie czarno na białym.
++q oznacza zwiększ wartość o jeden i zwróć NOWĄ wartość
q++ oznacza zwiększ wartość o jeden i zwróć STARĄ wartość
nigdy nie rób tak:
a=q++ + q++
bo wynik takiej operacji dla różnych kompilatorów będzie różny! Nadużywanie skrótowców jest wysoce niewskazane.
Twój kod jest rónwoważny temu:
int n=5,p=10,q=5,r=1;
++q;
// tu q=6
r=(p==(q+4));
p--; //p = 9
// q= 6; p = 9; r=1 (true)
Dziękuję wam, teraz stało się to dla mnie o dużo jaśniejsze :)