Costanti 🇬🇧
Note a cura di Antonino Furnari - antonino.furnari@unict.it🔝
Università di Catania, Dipartimento di Matematica e Informatica
Note disponibili qui: http://www.antoninofurnari.github.iohttps://antoninofurnari.github.io/lecture-notes/it/programmazione-c/costanti/
Le costanti in C++ sono delle espressioni con un valore fisso. Esistono diversi tipi di constanti. Li vediamo nelle sezioni successive.
Letterali
I valori letterali sono il tipo più semplice di costante. Vengono utilizzati per specificare dei valori all’interno dei programmi. Ad esempio, nell’espressione:
|
|
“5” è una costante letterale. Così come le variabili, anche i letterali sono associati a un tipo. In generale possiamo avere letterali interi, a virgola mobile, caratteri, stringhe (ovvero sequenze di caratteri - le approfondiremo in seguito), puntatori e letterali definiti dall’utente. Un letterale intero è di default un int
, mentre un letterale in virgola mobile è di default un double
. E’ tuttavia possibile specificare un tipo diverso aggiungendo dei suffissi ai letterali:
|
|
Nel caso dei numeri in virgola mobile:
|
|
I letterali possono essere anche di tipo carattere e stringa:
|
|
Non abbiamo ancora formalmente parlato delle stringhe, ma abbiamo usato delle stringhe letterali negli esempi passati (ad esempio per il programma “Hello World”). Vederemo meglio e in termini più formali cosa sono le stringhe nelle prossime lezioni. Per adesso, consideriamole come delle sequenze di caratteri che servono a rappresentare una o più righe di testo.
Espressioni costanti con un nome
In certi casi, può essere utile assegnare dei nomi alle costanti. Questo può essere fatto definendo una variabile come costante mediante la keyword const
:
|
|
Non è possibile cambiare il valore di una costante:
|
|
Le costanti definite possono essere utilizzate al posto dei relativi letterali. Ad esempio:
|
|
Da notare che in C non si può separare dichiarazione e inizializzazione delle costanti. Ad esempio:
|
|
Definizioni del preprocessore (#define)
Un altro modo di definire delle costanti è usare la direttiva al preprocessore #define
. La definizione va fatta seguendo il formato:
|
|
Dopo questa definizione, ogni occorrenza di identifier
verrà rimpiazzata con replacement
in tutto il codice dal pre-processore del compilatore. Per convenzione, i nomi di questo tipo di costanti vengono definiti usando solo lettere maiuscole. Ad esempio:
|
|
4
La definizione appena vista viene detta MACRO. Questa definizione è più efficiente di utilizzare le costante definite mediante const
, in quanto nel primo caso sarà il preprocessore a modificare il codice e non verrà introdotta alcuna nuova variabile (con risparmio di memoria in alcuni casi). In pratica, il codice scritto sopra diventa come segue dopo che il pre-processore l’ha elaborato:
|
|
4
Va notato però che il pre-processore effettua una sostituzione senza prestare attenzione alla semantica, il che potrebbe portare a poca leggibilità o errori di semantica. Ad esempio, il seguente codice è del tutto valido, anche se la sua interpretazione non è chiara:
|
|
0
Esercizi
Esercizio Si definisca una costante |