I Commenti in C++
- Un commento è una porzione di testo in un programma che viene ignorata dal compilatore.
- I commenti aiutano i lettori umani del codice sorgente a comprendere il significato del programma.
- Esistono due tipi di commenti in C++: commenti a riga singola (che iniziano con
//
) e commenti a blocco (che iniziano con/*
e terminano con*/
). - Le coppie di commenti non possono annidarsi.
Commenti
Prima che i nostri programmi diventino molto più complessi, dovremmo studiare come C++ gestisce i commenti.
I commenti aiutano i lettori umani dei nostri programmi. Vengono tipicamente usati per riassumere un algoritmo, identificare lo scopo di una variabile o chiarire una porzione di codice altrimenti oscura. Il compilatore ignora i commenti, quindi non hanno alcun effetto sul comportamento o sulle prestazioni del programma.
Sebbene il compilatore ignori i commenti, i lettori del nostro codice non lo fanno. I programmatori tendono a credere ai commenti anche quando altre parti della documentazione del sistema sono obsolete. Un commento errato è peggiore di nessun commento, perché può fuorviare il lettore. Quando si modifica il codice, è necessario aggiornare anche i commenti!
Tipi di commenti in C++
Esistono due tipi di commenti in C++: a riga singola e a blocco.
Un commento a riga singola inizia con una doppia barra (//
) e termina con una nuova riga. Tutto ciò che si trova a destra delle barre nella riga corrente è ignorato dal compilatore. Un commento di questo tipo può contenere qualsiasi testo, incluse ulteriori doppie barre.
L'altro tipo di commento utilizza due delimitatori (/*
e */
) ereditati dal linguaggio C. Tali commenti iniziano con /*
e terminano con il successivo */
. Questi commenti possono includere qualsiasi cosa che non sia */
, incluse le nuove righe. Il compilatore tratta tutto ciò che si trova tra /*
e */
come parte del commento.
Una coppia di commenti può essere inserita ovunque sia consentito un tab, uno spazio o una nuova riga. Le coppie di commenti possono estendersi su più righe di un programma, ma non è obbligatorio farlo. Quando una coppia di commenti si estende su più righe, è spesso buona pratica indicare visivamente che le righe interne fanno parte di un commento multi-linea. Il nostro stile prevede di iniziare ogni riga del commento con un asterisco, indicando così che l'intero intervallo è un commento multi-linea.
I programmi contengono tipicamente una combinazione di entrambi i formati di commento. Le coppie di commenti sono generalmente usate per spiegazioni multi-linea, mentre i commenti con doppia barra tendono a essere usati per annotazioni a mezza riga o a riga singola:
#include <iostream>
/*
* Funzione main semplice:
* Legge due numeri e scrive la loro somma
*/
int main()
{
// chiedere all'utente di inserire due numeri
std::cout << "Enter two numbers:" << std::endl;
int valore1 = 0, valore2 = 0; // variabili per contenere l'input letto
std::cin >> valore1 >> valore2; // leggere l'input
std::cout << "The sum of " << valore1 << " and " << valore2
<< " is " << valore1 + valore2 << std::endl;
return 0;
}
Le coppie di commenti non si annidano
Un commento che inizia con /*
termina con il successivo */
. Di conseguenza, una coppia di commenti non può apparire all'interno di un'altra. I messaggi di errore del compilatore generati da questo tipo di errore possono risultare misteriosi e confusi. Come esempio, si provi a compilare il programma seguente sul proprio sistema:
/*
* le coppie di commenti /* */ non possono annidarsi.
* ''non possono annidarsi'' è considerato codice sorgente,
* così come il resto del programma
*/
int main()
{
return 0;
}
Spesso è necessario commentare un blocco di codice durante il debug. Poiché quel codice potrebbe contenere coppie di commenti annidate, il modo migliore per commentare un blocco è inserire commenti a riga singola all'inizio di ogni riga nella sezione che si desidera ignorare:
// /*
// * tutto ciò che si trova all'interno di un commento a riga singola è ignorato
// * incluse le coppie di commenti annidate
// */
Esercizi
-
Indicare quali, se ce ne sono, delle seguenti istruzioni di output sono legali:
std::cout << "/*"; std::cout << "*/"; std::cout << /* "*/" */; std::cout << /* "*/" /* "/*" */;
Soluzione:
Le prime due istruzioni sono legali. La terza istruzione non è legale perché il commento inizia con
/*
e termina con il successivo*/
, che si trova prima della fine dell'istruzione. La quarta istruzione è legale perché il commento inizia con/*
e termina con il successivo*/
, che si trova alla fine dell'istruzione.