# Revisione dei Token C

Nella programmazione C, i token sono i più piccoli elementi individuali che compongono un programma. Ecco una revisione completa dei token C:

## 1. Parole chiave

Queste sono parole riservate con un significato speciale per il compilatore:

```c

auto break case char const continue

default do double else enum extern

float for goto if int long

register return short signed sizeof static

struct switch typedef union unsigned void

volatile while _Bool _Complex _Imaginary

```

## 2. Identificatori

Nomi dati a variabili, funzioni, array, ecc.:

- Regole:

- Deve iniziare con una lettera o un trattino basso

- Può contenere lettere, cifre, trattini bassi

- Sensibile al maiuscolo/minuscolo

- Non può essere una parola chiave

## 3. Costanti/Literal

Valori fissi che non cambiano:

- Intero: `123`, `-456`, `0x1A` (esadecimale), `0123` (ottale)

- Punto mobile: `3.14`, `-0.5e-10`

- Carattere: `'a'`, `'\n'`, `'\x41'`

- Stringa: `"Ciao"`, `"Linea 1\nLinea 2"`

## 4. Operatori

Simboli che eseguono operazioni:

- Aritmetici: `+`, `-`, `*`, `/`, `%`, `++`, `--`

- Relazionali: `==`, `!=`, `>`, `<`, `>=`, `<=`

- Logici: `&&`, `||`, `!`

- Bitwise: `&`, `|`, `^`, `~`, `<<`, `>>`

- Assegnazione: `=`, `+=`, `-=`, ecc.

- Varie: `sizeof()`, `&` (indirizzo), `*` (puntatore), `?:` (ternario)

## 5. Simboli Speciali

- Parentesi: `[]` (array), `{}` (blocchi), `()` (funzioni)

- Punteggiatura: `,`, `;`, `:`, `#` (preprocessore)

## 6. Commenti

Non sono tecnicamente token (rimossi durante il preprocessing), ma importanti:

```c

// Commento su una riga

/* Commento su più righe

*/

```

## Esempi di Token

```c

#include <stdio.h> // '#' e '<stdio.h>' sono token

int main() { // 'int', 'main', '(', ')', '{' sono token

int x = 10; // 'int', 'x', '=', '10', ';' sono token

printf("%d", x);// 'printf', '(', '"%d"', ',', 'x', ')', ';'

return 0; // 'return', '0', ';'

} // '}' è un token

```

Comprendere questi token è fondamentale per scrivere e leggere il codice C in modo efficace.