Modifikátory typu C ++: krátké, dlouhé, podepsané a nepodepsané

V tomto tutoriálu se pomocí příkladů dozvíme o modifikátorech typů a jejich použití v programování v C ++.

V programování v C ++ se modifikátory typů používají ke změně významu základních datových typů.

V C ++ existují čtyři modifikátory typů.

  • short
  • long
  • signed
  • unsigned

Zde je krátké shrnutí:

Datový typ Velikost (v bajtech) Význam
signed int 4 použito pro celá čísla (ekvivalentní int)
unsigned int 4 lze uložit pouze nezáporná celá čísla
short 2 používá se pro malá celá čísla (rozsah -32768 až 32767 )
long alespoň 4 používá se pro velká celá čísla (ekvivalentní long int)
unsigned long 4 používá se pro velká kladná celá čísla nebo 0 (ekvivalent unsigned long int)
long long 8 používá se pro velmi velká celá čísla (ekvivalentní long long int).
unsigned long long 8 používá se pro velmi velká kladná celá čísla nebo 0 (ekvivalent unsigned long long int)
long double 8 používá se pro velká čísla s plovoucí desetinnou čárkou
signed char 1 používá se pro znaky (garantovaný rozsah -127 až 127 )
unsigned char 1 používá se pro znaky (rozsah 0 až 255 )

modifikátor krátkého typu

Můžeme použít shortpro malá celá čísla (v rozsahu −32,767do +32,767).

Například,

 // small integer short a = 12345;

Zde je a shortceločíselná proměnná.

Poznámka: short je ekvivalentní s short int.

dlouhý modifikátor typu

Pokud potřebujeme uložit velké celé číslo (v rozsahu -2147483647 až 2147483647), můžeme použít specifikátor typu long. Například,

 // large integer long b = 123456;

Poznámka: long je ekvivalentní s long int.

Modifikátor dlouhého typu lze také použít s doubleproměnnými.

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

Poznámka: K označení long doublepoužíváme Lpříponu. Pokud příponu nepoužíváme L, je to doublehodnota převedená na long double(což může mít za následek ztrátu dat).

dlouho dlouho

longlze opakovat dvakrát a vytvořit long longtyp. Tento typ se používá pro ještě větší čísla než long. long longmodifikátor typu lze použít pouze s int.

Například,

 // long long int long long num = 12345678;

podepsané a nepodepsané modifikátory

Podepsané proměnné mohou obsahovat jak kladná, tak záporná celá čísla včetně nuly . Například,

 // positive valued integer signed int x = 23; // negative valued integer signed int y = -13; // zero-valued integer signed int z = 0;

Tady,

  • x obsahuje celé číslo s kladnou hodnotou
  • y obsahuje celé číslo se zápornou hodnotou
  • z drží celé číslo s nulovou hodnotou

Poznámka:

  • Ve výchozím nastavení jsou celá čísla signed. Proto místo toho signed intmůžeme přímo použít int.
  • signed a unsigned lze použít pouze u typů int a char.

Tyto nepodepsané proměnné může mít pouze nezáporné celočíselné hodnoty. Například,

 // positive valued integer unsigned int x = 2; unsigned int y = 0;

Tady,

  • x obsahuje celé číslo s kladnou hodnotou
  • y drží nulu

Obecně platí, že intproměnná může ukládat rozsah hodnot od -2 147 483 648 do 2 147 483 647 . Zatímco unsigned inproměnná t může ukládat rozsah hodnot od 0 do 4 294 967 295 .

podepsaný, nepodepsaný a prostý znak

C ++ má 3 různé druhy Znak: char, signed chara unsigned char. V praxi existují v zásadě pouze 2 typy: signed chara unsigned char.

To proto, že i když charnení stejný jako signed charnebo unsigned charve standardním C ++, různé překladače zacházet charjako jeden signed charnebo unsigned charpodle vlastní volby.

Poznámka: Když používáme pouze charmísto signed charnebo unsigned char, je tento typ známý jako prostý znak .

Jak jste možná uhodli, signed charmůže ukládat kladná i záporná celá čísla, zatímco unsigned charmůže ukládat pouze kladná celá čísla (včetně 0 ).

Zaručena rozsah integer hodnoty signed charlze uložit, je -127 až 127 , zatímco rozsah unsigned charje 0 až 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;

Tady,

  • plain_1 obsahuje kladné celé číslo
  • plain_2 obsahuje celé číslo s nulovou hodnotou
  • sin_1 obsahuje kladné celé číslo
  • sin_2 obsahuje celé číslo s nulovou hodnotou
  • sin_3 obsahuje celé číslo se zápornou hodnotou
  • unsin_1 obsahuje celé číslo se zápornou hodnotou
  • unsin_2 obsahuje celé číslo s nulovou hodnotou

Poznámka: Je lepší nepoužívat prostý znak k provádění numerických manipulací; Místo toho by měl být použit podepsaný znak nebo nepodepsaný znak. Prostý znak by měl být použit pouze k ukládání hodnot znaků.

Zajímavé články...