Dichiara che C ha solo cinque tipi di dati; int, float, double, char e _Bool.
Questa è una semplificazione eccessiva. Forse intenzionale, se il libro è rivolto ai principianti.
Se si passa attraverso C11 6.2.5 elenca i seguenti tipi di dati distinti:
tipi di carattere (6.2.5/15)
char
signed char
unsigned char
Uniche sottoscritte tipi interi (6.2 .5/4)
signed char
short int
int
long int
long long int
tipi unsigned interi standard (6.2.5/5)
_Bool
unsigned char
unsigned short int
unsigned int
unsigned long int
unsigned long long int
tipi reali galleggianti (6.2.5/10)
float
double
long double
tipi complessi (6.2.5/11)
float _Complex
double _Complex
long double _Complex
Tipo elencato (6.2.5/16)
enum {}
tipo void (6.2.5/19) (tipo void è un tipo incompleto)
void
tipi derivati (6.2.5/20) Tipo
- Array
- Tipo di struttura
- Unione tipo
- Tipo di funzione
- tipo Pointer
- tipo atomica
Formalmente il termine è indicatore di tipo 6.7.2:
type-specifier:
void
char
short
int
long
float
double
signed
unsigned
_Bool
_Complex
atomic-type-specifier
struct-or-union-specifier
enum-specifier
typedef-name
almeno un indicatore di tipo deve essere indicato nella dichiarazione specificatori in ogni dec laration e nell'elenco di qualificatore specificatore in ogni dichiarazione di struct e nome del tipo. Ogni elenco di identificatori di tipo deve essere uno dei seguenti multiset (delimitato da virgole, quando c'è più di un multiset per articolo); gli identificatori di tipo possono verificarsi in qualsiasi ordine, eventualmente mescolati con gli altri specificatori di dichiarazione .
- vuoto
- char
- firmato char
- unsigned char
- breve, firmato a breve, short int, o firmato short int
- unsigned short o unsigned short int
- int, firmato, o firmato int
- non firmato, o unsigned int
- lungo, firmato lunga, long int, o firmati long int
- unsigned long o unsigned long int
- lungo lungo, firmato lunga molto, molto lunga int o firmato long long int
- unsigned long long o unsigned long long int
- galleggiare
- doppia
- lungo doppio
- _Bool
- galleggiare _Complex
- doppia _Complex
- lungo doppio _Complex
- tipo atomico specificatore
- struct o unione specificatore
- enum identificatore 012.380.073.162. - typedef nome
Come possiamo vedere, long
è un indicatore di tipo. Non è un qualificatore di tipo.
'molti tutorial di Internet dicono che non c'è il tipo booleano in C' perché' _bool' è stato aggiunto in C99. –
Fare attenzione quando si esplorano tutorial C casuali sulla rete. Tendono ad essere pieni di BS. Non c'è nulla chiamato "qualificatore di segno" in C, e non c'è mai stato. La persona che ha scritto quel tutorial ha semplicemente tirato fuori quel termine dal suo posteriore. – Lundin
Il materiale su Internet può essere attendibile, ma i libri probabilmente no. –