W tym samouczku nauczymy się o modyfikatorach typów i jak ich używać w programowaniu w C ++ na podstawie przykładów.
W programowaniu C ++ modyfikatory typów służą do zmiany znaczenia podstawowych typów danych.
W C ++ istnieją cztery modyfikatory typów.
short
long
signed
unsigned
Oto krótkie podsumowanie:
Typ danych | Rozmiar (w bajtach) | Znaczenie |
---|---|---|
signed int | 4 | używany do liczb całkowitych (odpowiednik int ) |
unsigned int | 4 | może przechowywać tylko nieujemne liczby całkowite |
short | 2 | używany dla małych liczb całkowitych (zakres od -32768 do 32767 ) |
long | co najmniej 4 | używany dla dużych liczb całkowitych (odpowiednik long int ) |
unsigned long | 4 | używany dla dużych dodatnich liczb całkowitych lub 0 (odpowiednik unsigned long int ) |
long long | 8 | używany dla bardzo dużych liczb całkowitych (odpowiednik long long int ). |
unsigned long long | 8 | używany dla bardzo dużych dodatnich liczb całkowitych lub 0 (odpowiednik unsigned long long int ) |
long double | 8 | używany do dużych liczb zmiennoprzecinkowych |
signed char | 1 | używane dla znaków (gwarantowany zakres od -127 do 127 ) |
unsigned char | 1 | używane dla znaków (zakres od 0 do 255 ) |
krótki modyfikator typu
Możemy użyć short
dla małych liczb całkowitych (w zakresie −32,767
do +32,767
).
Na przykład,
// small integer short a = 12345;
Tutaj a jest short
zmienną całkowitą.
Uwaga: short
jest równoważne z short int
.
długi modyfikator typu
Jeśli potrzebujemy zapisać dużą liczbę całkowitą (z zakresu od -2147483647 do 2147483647), możemy użyć specyfikatora typu long
. Na przykład,
// large integer long b = 123456;
Uwaga: long
jest równoważne z long int
.
Modyfikatora typu long można również używać ze double
zmiennymi.
// large floating-point number long double c = 0.333333333333333333L;
Uwaga: aby wskazać long double
, używamy L
sufiksu. Jeśli nie używamy przyrostka L
, jest to double
wartość, która jest konwertowana na long double
(co może skutkować utratą danych).
długo, długo
long
można powtórzyć dwukrotnie, aby utworzyć long long
typ. Ten typ jest używany w przypadku nawet większych liczb niż long
. long long
modyfikator typu może być używany tylko z int
.
Na przykład,
// long long int long long num = 12345678;
podpisane i niepodpisane modyfikatory
Podpisane zmienne mogą zawierać zarówno dodatnie, jak i ujemne liczby całkowite, w tym zero . Na przykład,
// positive valued integer signed int x = 23; // negative valued integer signed int y = -13; // zero-valued integer signed int z = 0;
Tutaj,
- x zawiera liczbę całkowitą o wartości dodatniej
- y zawiera liczbę całkowitą o wartości ujemnej
- z zawiera liczbę całkowitą o wartości zero
Uwaga:
- Domyślnie liczby całkowite to
signed
. Dlatego zamiast tegosigned
int
możemy bezpośrednio użyćint
. signed
i unsigned może być używany tylko z typami int i char.
Te zmienne niepodpisane może posiadać tylko nieujemne wartości całkowite. Na przykład,
// positive valued integer unsigned int x = 2; unsigned int y = 0;
Tutaj,
- x zawiera liczbę całkowitą o wartości dodatniej
- y zawiera zero
Ogólnie int
zmienna może przechowywać zakres wartości od -2 147 483 648 do 2 147 483 647 . Natomiast unsigned in
zmienna t może przechowywać zakres wartości od 0 do 4 294 967 295 .
podpisany, niepodpisany i zwykły znak
C ++ ma 3 różne rodzaje Znak: char
, signed char
i unsigned char
. W praktyce istnieją zasadniczo tylko 2 typy: signed char
i unsigned char
.
Dzieje się tak, ponieważ nawet jeśli char
nie jest to to samo signed char
lub unsigned char
w standardowym C ++, różne kompilatory traktują char
jako albo signed char
albo unsigned char
zgodnie z własnymi preferencjami.
Uwaga: kiedy używamy tylko char
zamiast signed char
lub unsigned char
, ten typ jest znany jako zwykły znak .
Jak można się domyślić, signed char
może przechowywać zarówno dodatnie, jak i ujemne liczby całkowite, podczas gdy unsigned char
może przechowywać tylko dodatnie liczby całkowite (w tym 0 ).
Zagwarantowane zakres liczb całkowitych wartości signed char
można przechowywać jest -127 do 127 , podczas gdy zakres unsigned char
wynosi od 0 do 255 .
// plain char char plain_1 = 65; char plain_2 = 0; // plain char with negative value // might cause problems with some compilers char plain_3 = -56; // signed char signed char sin_1 = 12; signed char sin_2 = 0; signed char sin_3 = -12; // unsigned char unsigned char unsin_1 = -85; unsigned char unsin_2 = 0;
Tutaj,
- plain_1 przechowuje liczbę całkowitą o wartości dodatniej
- plain_2 zawiera liczbę całkowitą o wartości zero
- sin_1 zawiera liczbę całkowitą o wartości dodatniej
- sin_2 zawiera liczbę całkowitą o wartości zero
- sin_3 zawiera liczbę całkowitą o wartości ujemnej
- unsin_1 zawiera liczbę całkowitą o wartości ujemnej
- unsin_2 zawiera liczbę całkowitą o wartości zero
Uwaga: lepiej nie używać zwykłego znaku do wykonywania operacji numerycznych; Zamiast tego należy użyć znaku ze znakiem lub bez znaku. Zwykły znak powinien być używany tylko do przechowywania wartości znakowych.