Modyfikatory typu C ++: krótkie, długie, ze znakiem i bez znaku

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ć shortdla małych liczb całkowitych (w zakresie −32,767do +32,767).

Na przykład,

 // small integer short a = 12345;

Tutaj a jest shortzmienną 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 doublezmiennymi.

 // large floating-point number long double c = 0.333333333333333333L;

Uwaga: aby wskazać long double, używamy Lsufiksu. Jeśli nie używamy przyrostka L, jest to doublewartość, która jest konwertowana na long double(co może skutkować utratą danych).

długo, długo

longmożna powtórzyć dwukrotnie, aby utworzyć long longtyp. Ten typ jest używany w przypadku nawet większych liczb niż long. long longmodyfikator 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 tego signed intmoż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 intzmienna może przechowywać zakres wartości od -2 147 483 648 do 2 147 483 647 . Natomiast unsigned inzmienna 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 chari unsigned char. W praktyce istnieją zasadniczo tylko 2 typy: signed chari unsigned char.

Dzieje się tak, ponieważ nawet jeśli charnie jest to to samo signed charlub unsigned charw standardowym C ++, różne kompilatory traktują charjako albo signed charalbo unsigned charzgodnie z własnymi preferencjami.

Uwaga: kiedy używamy tylko charzamiast signed charlub unsigned char, ten typ jest znany jako zwykły znak .

Jak można się domyślić, signed charmoże przechowywać zarówno dodatnie, jak i ujemne liczby całkowite, podczas gdy unsigned charmoże przechowywać tylko dodatnie liczby całkowite (w tym 0 ).

Zagwarantowane zakres liczb całkowitych wartości signed charmożna przechowywać jest -127 do 127 , podczas gdy zakres unsigned charwynosi 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.

Interesujące artykuły...