Dela via


C-typspecificerare

Typspecificerare i deklarationer definierar typen av en variabel eller funktionsdeklaration.

Syntax

type-specifier: voidcharshortintlongfloatdoublesignedunsignedstruct-or-union-specifierenum-specifiertypedef-name

De signed char, signed int, signed short intoch signerade långa int-typerna , tillsammans med deras unsigned motsvarigheter och enum, kallas integraltyper . double- floatoch long double -typspecificerarna kallas flyttalstyper eller flyttalstyper. Du kan använda valfri integral- eller flyttalstypsspecificerare i en variabel- eller funktionsdeklaration. Ursprungligen, om en type-specifier inte angavs i en deklaration, togs det att vara int. Microsoft-kompilatorn accepterar inte längre standarddeklarationer int .

De valfria nyckelorden signed och unsigned kan föregå eller följa någon av de integrerade typerna, förutom enum, och kan också användas ensam som typspecificerare, i vilket fall de förstås som signed int respektive unsigned int. När det används ensamt antas nyckelordet int vara signed. När de används ensamt förstås nyckelorden long och short som långa int och short int.

Uppräkningstyper betraktas som grundläggande typer. Typspecificerare för uppräkningstyper beskrivs i Uppräkningsdeklarationer.

Nyckelordet void har tre användningsområden: för att ange en funktionsreturtyp, för att ange en argumenttypslista för en funktion som inte tar några argument och för att ange en pekare till en ospecificerad typ. Du kan använda typen void för att deklarera funktioner som inte returnerar något värde eller deklarera en pekare till en ospecificerad typ. Se Argument för information om void när den visas ensam inom parenteserna efter ett funktionsnamn.

Microsoft-specifik

Typkontrollen är nu ANSI-överensstämmande, vilket innebär att typen short och typen int är distinkta typer. Det här exemplet visar till exempel en omdefinition i Microsoft C-kompilatorn som godkändes av tidigare versioner av kompilatorn.

int   myfunc();
short myfunc();

Nästa exempel genererar också en varning om indirektion till olika typer:

int *pi;
short *ps;

ps = pi;  /* Now generates warning */

Microsoft C-kompilatorn genererar också varningar för skillnader i tecken. Till exempel:

signed int *pi;
unsigned int *pu;

pi = pu;  /* Now generates warning */

Typuttryck void utvärderas för biverkningar. Du kan inte använda värdet (obefintligt) för ett uttryck som har typen void på något sätt, och du kan inte heller konvertera ett void uttryck (genom implicit eller explicit konvertering) till någon typ utom void. Om du använder ett uttryck av någon annan typ i en kontext där ett void uttryck krävs ignoreras dess värde.

Om du vill följa ANSI-specifikationen void** kan du inte använda som int**. Endast void* kan användas som pekare till en ospecificerad typ.

Avsluta Microsoft Specifik

Du kan skapa fler typspecificerare med typedef deklarationer, enligt beskrivningen i Typedef-deklarationer. Se Lagring av grundläggande typer för information om storleken på varje typ.

Se även

Deklarationer och typer
typeof, __typeof__ (C23)
typeof_unqual, __typeof_unqual__ (C23)