W C++ słowo kluczowe unsigned jest modyfikatorem typu całkowitego. Zastosowane przed wbudowanym typem całkowitym (np. unsigned int, unsigned long, unsigned short) oznacza, że typ jest bez znaku, czyli jego zakres wartości obejmuje liczby nieujemne (od 0 do pewnej wartości maksymalnej zależnej od rozmiaru typu).
Dlatego odpowiedź "unsigned" pasuje do opisu: to właśnie ten modyfikator powoduje, że typ całkowity nie jest przeznaczony do zapisu liczb ujemnych.
Dlaczego pozostałe odpowiedzi są niepoprawne?
- "const" to kwalifikator stałości. Oznacza, że zmiennej nie można ponownie przypisać wartości po inicjalizacji. Nie zmienia to jednak tego, czy typ jest ze znakiem czy bez znaku.
- "short" to modyfikator rozmiaru (krótszy typ całkowity). Zmienia typową szerokość (liczbę bitów), ale sam w sobie nie przełącza typu na bez znaku. Można mieć zarówno short, jak i unsigned short.
- "long" również jest modyfikatorem rozmiaru (dłuższy typ całkowity). Tak jak wyżej: wpływa na rozmiar i zakres, ale nie wymusza nieujemności bez użycia unsigned. Można spotkać long oraz unsigned long.
Wskazówka egzaminacyjna: gdy w pytaniu pojawia się informacja o liczbach "wyłącznie nieujemnych" w kontekście typów całkowitych, szukaj pojęcia "bez znaku" (unsigned). Gdy mowa o "niezmienności" wartości, wtedy pasuje "const".