分享方式:


C 類型指定名稱

宣告中的類型指定名稱會定義變數或函式宣告的類型。

語法

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

、 、 和 帶正負號的long int 型別,以及其unsigned對應專案和 enum,稱為整數型別。signed short intsigned intsigned char floatdoublelong double 型別規範稱為點或浮點類型。 您可以在變數或函式宣告中使用任何整數或浮點類型指定名稱。 最初,如果未 type-specifier 在宣告中提供 ,則會是 int。 Microsoft 編譯程式不再接受預設 int 宣告。

選擇性關鍵字 signedunsigned 可以位於或追蹤任何整數型別之前或之後,除了 enum之外,也可以單獨當做型別規範使用,在此情況下,它們分別被理解為 signed intunsigned int。 單獨使用 時,關鍵詞 int 會假設為 signed。 單獨使用 時,關鍵詞 longshort 會理解為 long intshort int

列舉類型被視為基本類型。 列舉類型的類型指定名稱會在列舉宣告中討論。

關鍵字 void 有三個用途:指定函式傳回類型、指定不使用引數之函式的引數類型清單,以及指定未指定類型的指標。 您可以使用 void 類型宣告不傳回值的函式或宣告未指定類型的指標。 如需有關 void 單獨出現在函式名稱之後並以括弧括住時的詳細資訊,請參閱引數

Microsoft 特定的

類型檢查現在符合 ANSI 標準,這表示類型和 short 類型是不同的類型 int 。 例如,此範例會在舊版編譯程式接受的 Microsoft C 編譯程式中顯示重新定義。

int   myfunc();
short myfunc();

下一個範例也會產生關於不同類型間接取值的警告:

int *pi;
short *ps;

ps = pi;  /* Now generates warning */

Microsoft C 編譯器也會產生是否帶正負號之差異的警告。 例如:

signed int *pi;
unsigned int *pu;

pi = pu;  /* Now generates warning */

會評估類型 void 運算式的副作用。 您無法以任何方式使用表示式 void 的 (不存在) 值,也無法將表達式(透過隱含或明確轉換)轉換成 void 除 以外的 void任何類型。 如果您在需要 void 運算式的內容使用任何其他類型的運算式,則會捨棄其值。

若要符合 ANSI 規格, void** 不能當做 int**使用。 只能 void* 當做未指定型別的指標使用。

END Microsoft 特定的

您可以使用宣告建立更多類型規範typedef,如 Typedef 宣告中所述。 如需每種類型之大小的詳細資訊,請參閱基本類型的儲存區

另請參閱

宣告和類型
typeof, __typeof__ (C23)
typeof_unqual, __typeof_unqual__ (C23)