Variabili e costanti

Le variabili

Una variabile rappresenta uno spazio di memoria dove vengono memorizzati dei valori.

Nel linguaggio C le variabili devono essere prima dichiarate e poi inizializzate. La dichiarazione è una statement attraverso la quale si indica al compilatore di predisporre e riservare spazio in memoria per contenere il dato specificato, attraverso l’uso di un identificatore di riferimento a quella porzione di memoria. E’ possibile anche dichiarare più variabili allo stesso tempo:

int number, temp, index, max, min;

Nello standard C89 le variabili dovevano essere tutte dichiarate nella parte iniziale di un blocco di codice, sebbene lo standard C99 abbia superato questa prassi.

Dichiarazione

La dichiarazione di una variabile si compone di una dichiarazione di tipo e di un’ assegnazione di nome (o identificatore). La dichiarazione di tipo comporta l’utilizzo di una delle keyword riservate del linguaggio ed indica al compilatore il tipo di dato che la variabile deve contenere, mentre l’assegnazione del nome o identificatore é piuttosto libera, sebbene vi siano accorgimenti e convenzioni stilistiche che é buona pratica rispettare, allo scopo di rendere maggiormente comprensibile il nostro lavoro a coloro che dovranno leggerlo dopo di noi. Ciò detto, nel dichiarare una variabile bisogna evitare:

  • di farla iniziare con un numero (es: int 3variabile)
  • di farla iniziare con __ (underscore), utilizzati per i nomi dei tipi della libreria standard
  • che essa inizi con una lettera maiuscola (non é un errore, ma é una convenzione largamente utilizzata)
  • il nome della variabile non può contenere spazi

Inizializzazione

L’inizializzazione é la procedura attraverso la quale si attribuisce un valore alla variabile e avviene attraverso l’operatore di assegnamento (=) . E’ possibile dichiarare ed inizializzare più variabili allo stesso tempo, come nell’esempio seguente:

int var1 = 99, var4 = 150;

L’assegnazione diretta del valore ad una variabile prende il nome di “letterale”, in quanto, l’assegnazione di un valore alla valore alla variabile può avvenire anche dinamicamente, attraverso l’uso di una funzione, ad esempio.

double db = sqrt(44.44);

Le costanti

Una costante é uno spazio di memoria a sola lettura, cioè un valore che una volta assegnato non più essere alterato.

Una costante può essere inizializzata attraverso la keyword const. L’utilizzo di una costante comporta la sua inizializzazione contestualmente alla sua dichiarazione.

const float var1 = 9,99; → Corretto
short const var2 = 20; → Accettato
const int var 3;
var3 = 50; → Errore

La direttiva #define per le costanti

Una costante può anche essere dichiarata ed inizializzata con la direttiva #define che indica al preprocessore di sostituire tutte le occorrenze in cui compare il suo identificatore in fase di compilazione. In questo caso l’identificatore deve essere scritto in maiuscolo.

#define CIAO “Ciao a tutti” /*dichiarazione di costante di tipo stringa*/;
#define PIGRECO 3.14159 /*dichiarazione di costante di tipo numerico*/;

Tipi di dato fondamentali

La dichiarazione delle variabili e delle costanti implica la loro tipizzazione, ossia l’esplicita dichiarazione del tipo di dato che devono contenere allo scopo di riservare ad essi un adeguata quantità di memoria per contenerli. In C questi tipi di dato sono rappresentati dalla tabella seguente:

charintlong_Bool
doubleshortunsigned_Complex
floatsignedvoid_Imaginary

Specificatori di formato

Le funzioni printf e scanf comportano l’utilizzo di alcuni simboli detti “specificatori di formato” necessari a far comprendere al calcolatore il tipo di dato da inserire o da stampare a video. Tipicamente sono caratterizzati da un segnaposto e specificatori di conversione. Per praticità li elenchiamo nella tabella seguente:

%Segnaposto generico%oIntero ottale
%dIntero Decimale%cCarattere singolo
%fVirgola mobile%pVariabili puntatore
%sStringa%%Carattere percentuale
%xIntero esadecimale\nNuova linea

Specificatori di tipo

Anche il tipo di variabile può essere specificato nell’uso della funzione printf, indicando, sulla base della tabella precedente, gli opportuni simboli relativi al tipo:


DecimaleOttaleEsadecimale
Short%hd%ho%hx
Long%ld%lo%lx
Long Long%lld%llo%llx

Per i valori unsigned si inserisce u al termine dello specificatore, omettendo la d in caso di valore intero (int):

printf(“unsigned int: %u”, nome_variabile)

Luca Scandroglio

Sono un consulente tecnico informatico, un web designer e uno sviluppatore italiano. Aiuto le aziende a dotarsi degli strumenti tecnologici e digitali per superare le sfide del mercato di oggi.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *