Modificatori di tipo C ++: short, long, signed e unsigned

In questo tutorial impareremo i modificatori di tipo e come usarli nella programmazione C ++ con l'aiuto di esempi.

Nella programmazione C ++, i modificatori di tipo vengono utilizzati per cambiare il significato dei tipi di dati fondamentali.

Ci sono quattro modificatori di tipo in C ++.

  • short
  • long
  • signed
  • unsigned

Ecco un breve riassunto:

Tipo di dati Dimensioni (in byte) Senso
signed int 4 usato per numeri interi (equivalente a int)
unsigned int 4 può memorizzare solo numeri interi non negativi
short 2 utilizzato per numeri interi piccoli (intervallo da -32768 a 32767 )
long almeno 4 usato per numeri interi grandi (equivalente a long int)
unsigned long 4 usato per numeri interi positivi grandi o 0 (equivalente a unsigned long int)
long long 8 utilizzato per numeri interi molto grandi (equivalente a long long int).
unsigned long long 8 usato per numeri interi positivi molto grandi o 0 (equivalente a unsigned long long int)
long double 8 utilizzato per grandi numeri in virgola mobile
signed char 1 utilizzato per i caratteri (intervallo garantito da -127 a 127 )
unsigned char 1 utilizzato per i caratteri (intervallo da 0 a 255 )

Modificatore di tipo breve

Possiamo usare shortper piccoli numeri interi (nell'intervallo da −32,767a +32,767).

Per esempio,

 // small integer short a = 12345;

Qui, a è una shortvariabile intera.

Nota: short è equivalente a short int.

modificatore di tipo lungo

Se è necessario memorizzare un numero intero grande (compreso tra -2147483647 e 2147483647), è possibile utilizzare l'identificatore di tipo long. Per esempio,

 // large integer long b = 123456;

Nota: long è equivalente a long int.

Il modificatore di tipo lungo può essere utilizzato anche con le doublevariabili.

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

Nota: per indicare long double, usiamo il Lsuffisso. Se non utilizziamo il suffisso L, si tratta di un doublevalore che viene convertito long double(il che potrebbe causare la perdita di dati).

lungo lungo

longpuò essere ripetuto due volte per creare il long longtipo. Questo tipo viene utilizzato per numeri ancora maggiori di long. long longil modificatore di tipo può essere utilizzato solo con int.

Per esempio,

 // long long int long long num = 12345678;

modificatori firmati e non firmati

Le variabili con segno possono contenere numeri interi positivi e negativi compreso lo zero . Per esempio,

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

Qui,

  • x contiene un intero con valore positivo
  • y contiene un numero intero con valore negativo
  • z contiene un numero intero a valore zero

Nota:

  • Per impostazione predefinita, i numeri interi sono signed. Quindi, invece di signed int, possiamo usare direttamente int.
  • signed e unsigned possono essere usati solo con i tipi int e char.

Le variabili senza segno possono contenere solo valori interi non negativi. Per esempio,

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

Qui,

  • x contiene un intero con valore positivo
  • y contiene zero

In generale, una intvariabile può memorizzare un intervallo di valori compreso tra -2.147.483.648 e 2.147.483.647 . Mentre una unsigned invariabile t può memorizzare un intervallo di valori compreso tra 0 e 4.294.967.295 .

firmato, non firmato e semplice carattere

C ++ ha 3 diversi tipi char: char, signed chare unsigned char. In pratica, ci sono fondamentalmente solo 2 tipi: signed chare unsigned char.

Questo perché anche se charnon è uguale signed charo unsigned charnel C ++ standard, compilatori diversi trattano charcome uno signed charo unsigned charsecondo le proprie preferenze.

Nota: quando usiamo solo al charposto di signed charo unsigned char, questo tipo è noto come carattere semplice .

Come avrai intuito, signed charpuò memorizzare interi positivi e negativi, mentre unsigned charpuò memorizzare solo numeri interi positivi (incluso 0 ).

La garantito intervallo di valori interi signed charpossono memorizzare è -127 a 127 mentre la gamma di unsigned charè 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;

Qui,

  • plain_1 contiene un intero con valore positivo
  • plain_2 contiene un numero intero a valore zero
  • sin_1 contiene un numero intero con valore positivo
  • sin_2 contiene un numero intero a valore zero
  • sin_3 contiene un intero con valore negativo
  • unsin_1 contiene un numero intero con valore negativo
  • unsin_2 contiene un numero intero a valore zero

Nota: è preferibile non utilizzare caratteri semplici per eseguire manipolazioni numeriche; al suo posto dovrebbero essere usati caratteri con segno o caratteri senza segno. Il carattere normale deve essere utilizzato solo per memorizzare i valori dei caratteri.

Articoli interessanti...