Lo standard del C prevede i seguenti tipi dati elementari:
void /* tipi interi */ char signed char unsigned char short short int signed short int unsigned short unsigned short int int signed signed int unsigned unsigned int long signed long long int signed long int unsigned long unsigned long int /* lo standard 89 non supporta long long */ long long signed long long long long int signed long long /* tipi floating */ float double long double /* tipo booleano */ _Bool /* tipi complessi */ float _Complex double _Complex long double _Complex /* float _Imaginary double _Imaginary long double _Imaginary ib; questi ultimi tre possono non essere implementati (gcc per esempio non li accetta */