Zmienne muszą być zdefiniowane przed użyciem. Dostępne są następujące
podstawowe typy danych:
| Typ | Definicja | Typowy rozmiar |
| char | zmienna znakowa | 1 bajt |
| short int | liczba znakowa krótka | 2 bajty |
| int | liczba całkowita | zależy od realizacji |
| long int | liczba całkowita długa | 4 bajty |
| float | liczba zmiennoprzecinkowa | 4 bajty |
| double | liczba zmiennoprzecinkowa o podwójnej precyzji | 8 bajtów |
| long double | liczba zmiennoprzecinkowa długa | zależy od realizacji np. 80 bitów |
| unsigned char | zmienna znakowa bez znaku | 1 bajt |
| unsigned int | liczba całkowita bez znaku | zależy od realizacji |
Podane są rozmiary najczęściej używane, ale programista powinien
sprawdzić rozmiar dla używanego kompilatora.
Występują jeszcze inne typy danych:
- tablica, czyli wielokrotne wystąpienie identycznych zmiennych;
- struktura, czyli grupa powiązanych zmiennych; mogą być różnych typów;
- wskaźnik, czyli zmienna zawierająca adres innej zmiennej;
- unia, czyli dwie lub więcej zmiennych zajmujacych w pamięci to samo miejsce;
- dane wyliczeniowe (enum), czyli zmienne o ograniczonym zbiorze dopuszczalnych wartości;
- ciąg znaków (łańcuch), czyli tablica zmiennych znakowych typu char, zakończona znakiem NULL.
- tablica, czyli wielokrotne wystąpienie identycznych zmiennych;
- struktura, czyli grupa powiązanych zmiennych; mogą być różnych typów;
- wskaźnik, czyli zmienna zawierająca adres innej zmiennej;
- unia, czyli dwie lub więcej zmiennych zajmujacych w pamięci to samo miejsce;
- dane wyliczeniowe (enum), czyli zmienne o ograniczonym zbiorze dopuszczalnych wartości;
- ciąg znaków (łańcuch), czyli tablica zmiennych znakowych typu char, zakończona znakiem NULL.