KWALIFIKACJA INF3 - CZERWIEC 2021

PYTANIE NR 6.
W języku C++ zdefiniowano zmienną: char zm1;. W jaki sposób można do niej przypisać wartość zgodnie ze składnią języka?
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zmienna typu char przechowuje pojedynczy znak, więc poprawnie przypisuje się ją literałem znakowym w apostrofach.
Poprawne jest: zm1 = 'w';.
Pozostałe zapisy to porównanie (==), indeksowanie jak tablicy oraz literał łańcuchowy w cudzysłowie.

Pełne wyjaśnienie:

Typ char w C++ służy do przechowywania pojedynczego znaku (jednej jednostki typu znakowego). Aby przypisać do takiej zmiennej konkretny znak, należy użyć literału znakowego, który w C++ zapisuje się w apostrofach, np. 'w'. Dlatego zapis zm1 = 'w'; jest poprawną instrukcją przypisania.

Zapis zm1 == 0x35; jest niepoprawny w kontekście pytania, ponieważ operator == nie przypisuje wartości, tylko porównuje dwie wartości i daje wynik logiczny. Taki zapis mógłby wystąpić w warunku, ale nie służy do ustawienia zmiennej.

Zapis zm1[2] = 32; zakłada, że zm1 jest tablicą (lub wskaźnikiem) i można go indeksować. Tymczasem zdefiniowano pojedynczą zmienną: char zm1;. Indeksowanie nie ma tu sensu i jest błędem.

Zapis zm1 = "wiadro"; używa literału łańcuchowego w cudzysłowie, czyli tekstu składającego się z wielu znaków (tablicy znaków zakończonej znakiem końca). Tego nie da się przypisać bezpośrednio do pojedynczego char, bo to inny typ danych.

Wskazówka egzaminacyjna: zapamiętaj regułę 'a' to znak, a "a" to łańcuch. Różnica jednego znaku w zapisie zmienia typ i dopuszczalne operacje.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
To deklaracja zmiennej zm1 typu char, czyli przeznaczonej do przechowywania pojedynczego znaku (wartości znakowej). Po takiej deklaracji zmienna istnieje, ale bez przypisania nie ma jeszcze ustawionej sensownej wartości użytkowej.
Użyj literału znakowego w apostrofach, np. zm1 = 'w';. Apostrofy oznaczają pojedynczy znak. To najczęstsza i poprawna składnia przypisania wartości do zmiennej typu char.
'a' to literał znakowy (pojedynczy znak, typ znakowy), a "a" to literał łańcuchowy (ciąg znaków). Różnica w cudzysłowach zmienia typ danych, dlatego nie można traktować ich zamiennie w przypisaniach.
Nie bezpośrednio. Napis w cudzysłowie to łańcuch znaków (w praktyce tablica znaków), a char mieści tylko jeden znak. Do przechowywania napisów używa się np. tablicy char lub typu std::string.
Operator == służy do porównania, a nie do przypisania. Taki zapis zwraca wynik logiczny (prawda/fałsz) i jest typowy w warunkach, np. w if. Do ustawienia wartości zmiennej używa się operatora =.
Tak, bo char przechowuje małą liczbę całkowitą reprezentującą kod znaku. 0x35 to zapis szesnastkowy liczby. Aby jednak przypisać ją do zmiennej, musi to być przypisanie z =, a nie porównanie z ==.
Indeksowanie nawiasami [ ] dotyczy tablic lub wskaźników. Zmienna zadeklarowana jako pojedynczy char nie jest tablicą, więc nie ma elementów o indeksach 0, 1, 2. Taki zapis jest błędem typów/znaczenia.
Sprawdź operator: = ustawia wartość zmiennej, a == tylko porównuje. Dobra praktyka: czytaj kod "na głos" — "ustaw zm1 na…" oznacza =, a "czy zm1 jest równe…" oznacza ==.
Najczęstsze pomyłki to użycie cudzysłowów zamiast apostrofów, wpisanie więcej niż jednego znaku w apostrofach oraz mieszanie typów (np. próba przypisania napisu do char). Warto ćwiczyć pary: 'a' vs "a".
Ćwicz krótkie przykłady i sprawdzaj, jaki typ ma dana wartość: literał znakowy, liczba, łańcuch. Pomaga lista kontrolna: typ zmiennejtyp literałuczy operator jest właściwy. To zmniejsza ryzyko wyboru pułapki typu ==.
info

Około 59% zdających odpowiada poprawnie na to pytanie. średnie

Źródła:

  • cppreference.com: Character literal (C++) — https://en.cppreference.com/w/cpp/language/character_literal (dostęp: 2026-02-28)
  • cppreference.com: Fundamental types — https://en.cppreference.com/w/cpp/language/types (dostęp: 2026-02-28)
  • cppreference.com: Assignment operators — https://en.cppreference.com/w/cpp/language/operator_assignment (dostęp: 2026-02-28)

Materiały:

  • Dokumentacja cppreference dotycząca literałów znakowych i typów fundamentalnych
  • Podstawowy podręcznik do C++ obejmujący typy proste i operatory
  • Krótkie ćwiczenia: różnicowanie 'a' vs "a" oraz = vs ==

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego