C 类型说明符
声明中的类型说明符定义变量或函数声明的类型。
语法
%>
signed char
、signed int
、signed short int
和 signed long int 类型以及它们对应的 unsigned
和 enum
一起称为“整型”类型。 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*
才能用作指向未指定的类型的指针。
结束 Microsoft 专用
可以使用 typedef
声明创建更多的类型说明符,如 Typedef 声明中所述。 有关每个类型的大小的信息,请参阅基本类型的存储。
请参阅
声明和类型
typeof, __typeof__
(C23)
typeof_unqual, __typeof_unqual__
(C23)