KWALIFIKACJA INF3 - STYCZEŃ 2020

PYTANIE NR 28.
W języku JavaScript instrukcję: a++; można inaczej zapisać jako
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Wyrażenie a++ to postinkrementacja, czyli zwiększenie wartości zmiennej a o 1 (po użyciu jej bieżącej wartości w wyrażeniu). Równoważny zapis samej zmiany wartości to a = a + 1;. Pozostałe propozycje dotyczą błędnej składni lub operacji bitowych (&, <<).

Pełne wyjaśnienie:

W JavaScript zapis a++ oznacza postinkrementację, czyli zwiększenie wartości zmiennej a o 1. Jeśli interesuje nas równoważny zapis samego efektu (zwiększenia zmiennej), to poprawnym odpowiednikiem jest a = a + 1;.

Warto pamiętać o różnicy między a++ (postinkrementacja) a ++a (preinkrementacja): oba zwiększają a o 1, ale różnią się tym, jaką wartość "zwracają" w większym wyrażeniu. W tym zadaniu jednak pytanie dotyczy przepisania instrukcji, więc kluczowe jest, że efekt końcowy na zmiennej to dodanie 1.

Dlaczego pozostałe odpowiedzi są niepoprawne?

  • 1 += a; – to nie jest poprawny zapis w JavaScript, ponieważ lewa strona operatora przypisania złożonego musi być elementem, do którego można przypisać wartość (np. zmienną), a literał 1 nie może być celem przypisania.
  • a << 1; – operator przesunięcia bitowego w lewo nie jest tym samym co dodanie 1. Przesunięcie o 1 bit w lewo odpowiada w typowym przypadku mnożeniu przez 2 (dla liczb całkowitych w kontekście operacji bitowych), a dodatkowo w JavaScript operacje bitowe działają na 32-bitowych liczbach całkowitych.
  • a = a & 1; – operator AND bitowy wykonuje maskowanie bitów. Taki zapis zostawia tylko najmłodszy bit (sprawdza parzystość w sensie bitowym), a nie zwiększa wartości o 1.

W praktyce w kodzie spotkasz zarówno a++, jak i a += 1 czy a = a + 1. Na egzaminie zwracaj uwagę, czy odpowiedź dotyczy arytmetyki (dodawanie) czy operatorów bitowych (&, <<), które mają zupełnie inne znaczenie.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
Zapis a++ oznacza postinkrementację: zwiększa wartość zmiennej a o 1. Różnica względem ++a dotyczy tego, jaką wartość zwraca całe wyrażenie, ale efekt na zmiennej (dodanie 1) jest ten sam.
Równoważny zapis zmiany wartości to a = a + 1;. W praktyce często spotyka się też a += 1;, które również zwiększa a o 1, ale jest inną konstrukcją składniową.
Oba zapisy powodują ten sam skutek końcowy: wartość zmiennej a rośnie o 1. Operator ++ to skrócona forma inkrementacji, a zapis z dodawaniem pokazuje tę operację wprost.
W kontekście samej zmiany wartości zmiennej zwykle tak: oba zwiększają a o 1. Różnica może ujawnić się, gdy wynik wyrażenia jest dalej używany, bo a++ i ++a mają inną wartość zwracaną.
++a (preinkrementacja) najpierw zwiększa a, a potem zwraca nową wartość. a++ (postinkrementacja) zwraca starą wartość i dopiero potem zwiększa a. W obu przypadkach a końcowo rośnie o 1.
Bo lewa strona operatora przypisania (także +=) musi być czymś, do czego da się przypisać wynik (np. zmienną, element tablicy, właściwość obiektu). Liczba 1 jest literałem, więc nie może być "miejscem" zapisu.
Nie. << to przesunięcie bitowe w lewo. Dla liczb całkowitych często odpowiada to mnożeniu przez 2 (przy przesunięciu o 1), a nie dodawaniu 1. To zupełnie inna klasa operacji niż inkrementacja.
To operacja bitowa AND z maską 1. Taki zapis zostawia tylko najmłodszy bit liczby, więc wynik jest zwykle 0 albo 1. Nie zwiększa wartości zmiennej, tylko ją "maskuje" bitowo.
Częsty błąd to mylenie pre- i postinkrementacji w złożonych wyrażeniach (np. w warunkach lub przy przypisaniu). Inny błąd to traktowanie operatorów bitowych (&, <<) jak arytmetycznych. Pomaga testowanie na prostych przykładach w konsoli.
Ćwicz na krótkich fragmentach kodu: pętle, liczniki, instrukcje warunkowe. Zapisuj to samo działanie na kilka sposobów (a++, a += 1, a = a + 1) i sprawdzaj w konsoli. Oddzielnie przećwicz operatory bitowe (&, <<).
info

Statystycznie 79% uczniów zna prawidłową odpowiedź. średnio łatwe

Specjaliści zwracają uwagę: "Wyrażenie a++ to postinkrementacja, czyli zwiększenie wartości zmiennej a o 1 (po użyciu jej bieżącej wartości w wyrażeniu)."

Źródła:

  • MDN Web Docs: "Increment (++)" (JavaScript operator) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Increment (dostęp: 2026-02-27)
  • MDN Web Docs: "Addition assignment (+=)" — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Addition_assignment (dostęp: 2026-02-27)
  • MDN Web Docs: "Left shift (<<)" — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Left_shift (dostęp: 2026-02-27)

Materiały:

  • Dokumentacja MDN: operatory inkrementacji i dekrementacji w JavaScript
  • Dokumentacja MDN: operatory przypisania (np. +=) i ich znaczenie
  • Ćwiczenia: refaktoryzacja prostych fragmentów kodu (zamiana ++ na równoważne wyrażenia)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego