C 類型指定名稱
宣告中的類型指定名稱會定義變數或函式宣告的類型。
語法
type-specifier
: void
char
short
int
long
float
double
signed
unsigned
struct-or-union-specifier
enum-specifier
typedef-name
、 、 和 帶正負號的long int 型別,以及其unsigned
對應專案和 enum
,稱為整數型別。signed short int
signed int
signed char
float
、 double
和 long double
型別規範稱為浮點或浮點類型。 您可以在變數或函式宣告中使用任何整數或浮點類型指定名稱。 最初,如果未 type-specifier
在宣告中提供 ,則會是 int
。 Microsoft 編譯程式不再接受預設 int
宣告。
選擇性關鍵字 signed
和 unsigned
可以位於或追蹤任何整數型別之前或之後,除了 enum
之外,也可以單獨當做型別規範使用,在此情況下,它們分別被理解為 signed int
和 unsigned int
。 單獨使用 時,關鍵詞 int
會假設為 signed
。 單獨使用 時,關鍵詞 long
和 short
會理解為 long int 和 short 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)