INF.04 · pytanie 268
Wykorzystując jeden z dwóch zaprezentowanych sposobów inkrementacji w językach z rodziny C lub Java, można zauważyć, że Zapis pierwszy: b = a++; Zapis drugi: b = ++a;
- ABez względu na zastosowany sposób, w zmiennej b zawsze uzyskamy ten sam rezultat.
- BTylko przy użyciu pierwszego zapisu zmienna a zostanie zwiększona o 1.
- CWartość zmiennej b będzie wyższa po użyciu drugiego zapisu w porównaniu do pierwszego.Poprawna
- DDrugi zapis nie jest zgodny ze składnią, co doprowadzi do błędów kompilacji.
Wyjaśnienie
W językach programowania z rodziny C (w tym C++ i Java) istnieją dwie formy inkrementacji: preinkrementacja (++x) i postinkrementacja (x++). Preinkrementacja zwiększa wartość zmiennej przed jej użyciem w wyrażeniu, natomiast postinkrementacja zwiększa ją dopiero po zakończeniu aktualnej operacji. Oznacza to, że w przypadku postinkrementacji, wartość zmiennej przed zwiększeniem zostanie użyta w bieżącym wyrażeniu, a dopiero potem następuje jej zwiększenie o 1. Ta subtelna różnica ma istotne znaczenie, zwłaszcza w pętlach i wyrażeniach logicznych, gdzie każda iteracja wpływa na wynik. W praktyce preinkrementacja jest nieco bardziej efektywna, ponieważ nie wymaga przechowywania kopii pierwotnej wartości zmiennej, co przekłada się na minimalnie lepszą wydajność w niektórych przypadkach.