Tipi di dati nel linguaggio C

I tipi di dati nel linguaggio C consentono di utilizzare lo spazio di memoria strettamente necessario alle operazioni logico-matematiche del programma. I principali tipi di dati del linguaggio C sono i caratteri, i numeri interi e i numeri reali.

Caratteri

Il formato carattere ( char ) è utilizzato per i simboli letterali e alfanumerici. Un carattere occupa soltanto un byte. Ogni simbolo grafico / carattere è associato a un determinato numero intero da 0 a 255 sulla tabella ASCII. Nel linguaggio C il formato carattere è definito tramite la dichiarazione CHAR. Ad esempio, nel seguente codice è assegnato il carattere 'A' che nella lista dei codici ASCI occupa il numero 65.

char c=65;

Lo stesso risultato si ottiene assegnando direttamente carattere 'A' come contenuto alfanumerico, inserendolo all'interno di due virgolette, come nel seguente esempio:

char c='A';

In entrambi i casi la variabile c visualizza sullo schermo la lettera A quando viene richiamata in un'istruzione Printf in formato carattere ( %c ).

printf ( " carattere: %c " , c );

Numero interi

Un numero intero è una seguenza di cifre senza virgola. Nel linguaggio C i numeri interi sono definiti in tre distinti formati sulla base delle dimensioni del numero. La definizione INT consente di dichiarare un formato numerico di dimensioni normali.

int c;

E' possibile anche definire una variabile numerica intera in una dimensione inferiore tramite la dichiarazione SHORT ( intero corto ). La definizione può essere scritta anche nel modo esteso SHORT INT.

short c;

Per gli interi di medio-grandi dimensioni si ricorre alla definizione LONG ( intero lungo ) che associa alla variabile maggiore spazio di memoria. La definizione può essere scritta anche nel modo esteso LONG INT.

long c;

In entrambi i casi la variabile c visualizza sullo schermo un numero quando viene richiamata in un'istruzione Printf in formato numerico digitale ( %d ).

printf ( " numero: %d " , c );

Quando non è specificato il segno, la dichiarazione del numero intero implica la presenza del segno ( SIGNED ). Ad esempio, una dichiarazione int equivale alla seguente forma estesa:

signed int c;

E' anche possibile definire una variabile numerica intera senza segno indicando UNSIGNED nella dichiarazione della stessa. L'assenza del segno consente di aumentare la dimensione numerica della variabile intera poiché, nel caso di una varibile unsigned, libera il bit del segno e lo rende utilizzabile per la registrazione delle cifre del numero.

unsigned int c;

Numeri reali

Nel linguaggio C i numeri reali sono composti da un numero esponenziale, da una mantissa ed eventualmente da un segno. I numeri in virgola mobile sono caratterizzati empre d un segno. I numeri reali sono definiti in virgola mobile tramite l'istruzione FLOAT

float c;

E' possibile definire numeri reali a maggiore precisione tramite le istruzioni DOUBLE ( doppia precisione ) e LONG DOUBLE ( quadrupla precisione ).

double c;
long double c;

https://www.okpedia.it/tipi_di_dati_linguaggio_c


Segnala un errore o invia un suggerimento per migliorare la pagina


note


  • Variabile booleana. Il linguaggio C non ha un tipo di dato logico booleano. Per utilizzare una variabile booleana è comunque possibile ottenere delle soluzioni alternative tramite la programmazione.
  • Conversione di tipo dei dati. Durante le operazioni di elaborazione e di assegnazione dei valori alle variabili può capitare di assegnare a una variabile un valore di tipo diverso rispetto a quello previsto. In questi casi il linguaggio C prevede un insieme di regole di conversione di tipo dette "cast". Ogni compilatore C adotta delle proprie regole di conversione. Le seguenti regole accoumunano gran parte dei compilatori:
    • Espressione con operandi di tipo diverso. Se un'espressione contiene operandi ( variabili ) di tipo diverso, gli operandi sono automaticamente convertiti al tipo di dato più grande utilizzato nell'espressione. Ad esempio, nell'espressione seguente la variabile addendo1 è un numero intero ( int ) e la variabile addendo2 è un numero in virgola mobile ( float ), la variabile somma viene convertita automaticamente al tipo float, essendo più grande rispetto al tipo int.

      float somma;
      int addendo1;
      float addendo2;
      somma = addendo1 + addendo2;

    • Conversione da virgola mobile a intero. Quando il compilatore C incontra l'assegnazione di un valore in virgola mobile ( float ) a una variabile per numeri interi ( int ), lo converte automaticamente in un numero intero, eliminando la parte decimale del numero. In questi casi il compilatore emette anche un avviso durante la procedura di compilazione del programma. Ad esempio, nel seguente esempio la variabile var1 ( float ) è pari a 10,4 e la variabile var2 è intera ( int ). Con l'operazione di assegnazione var1=var2, la variabile var2 ( intera ) assume il valore 10.

      float var1 = 10.4f;
      int var2;
      var2=var1;

    • Conversione da carattere a numero. Quando un numero intero ( int ) viene assegnato a una variabile di tipo carattere ( char ), la variabile può essere utilizzata in un'espressione matematica. Si tratta però di una forma di programmazione sporca che si espone al rischio di essere interpretata in modo diverso da ogni singolo compilatore. Pur accettando il nuovo tipo di dati, il compilatore emette un avviso in fase di compilazione del programma. Ad esempio, nel seguente esempio viene assegnato alla variabile addendo2 di tipo carattere ( char ) un valore numerico intero pari a 3.

      int somma;
      int addendo1 = 5;
      char addendo2=3;
      somma = addendo1 + addendo2;

    • Operatore di conversione ( conversione manuale ). Per evitare il rischio che la conversione automatica sia decisa dal compilatore in modo diverso rispetto a quanto previsto, è possibile utilizzare degli appositi operatori di conversione manuale di una variabile da un tipo di dato a un altro. Ad esempio, nel seguente codice sorgente la variabile var1 è in virgola mobile ( float ) mentre la variabile var2 è intera ( int ). Nell'operazione di assegnazione ( var2=var1 ) si indica espressamente al compilatore di convertire la variabile var1 in un numero intero ( int ) prima di assegnare il suo valore alla variabile var2.

      float var1 = 10.4f;
      int var2;
      var2 = int( var1 )


Il linguaggio C


FacebookTwitterLinkedinLinkedin