走马观花ANSI C标准-类型
类型(type)
1、类型分为:
a) object type — types that fully describe objects
b) function type — types that describe functions
c) uncomplete type — types that describe objects but lack information needed to determine their sizes,如void
2、在C99中加入了布尔类型_Bool,其定义为大小足够容纳0和1的类型。检查一下手头的编译器发现GCC 3.4.3支持_Bool,而Microsoft C/C++ Version 12.00.8168(VC6.0)则不支持。
3、char类型被定义为:大小足以容纳任何一个“basic execution charactor set”中的字符。如果任何一个“basic execution charactor set”中的字符存储在一个char中,它的值可以保证为“positive”;其他字符存储在一个char中,其值要根据具体的实现定义了。
4、标准定义了5个有符号整型:signed char, short int, int, long int, and long long int。当然各个不同的实现可以定义自己的扩展有符号整型。我们常说的有符号整型指的是标准的和扩展的统称。一个signed char占用的内存空间和一个"plain" char相同。一个"plain" int拥有执行环境架构建议的“自然大小”。区间在[INT_MIN, INT_MAX](in limits.h)
5、每一个标准定义的有符号整型都对应着一个unsigned int type, 它们称为标准无符号整型。它们占据的内存空间与有符号整型相同。和有符号整型一样,各个不同的实现定义了相关的扩展无符号整型。它们放在一起统称为“无符号整型”。
6、标准定义了3个“浮点实型”,分别为:float , double , long double。float的值的范围是double值范围的子集,同样double的值的范围是long double值范围的子集。
7、char type, signed int和unsigned int types, float type被统称为"basic types"。枚举是一个整型常量的集合。char type, signed int和unsigned int types和枚举统称为integer types。integer types和real floating types统称为"real types"。
8、void是个典型的uncomplete type,而且不能被completed;一个没有指定size的数组类型也是uncomplete type,但是却可以被completed。
9、到目前为止,以上提到都是"unqualified type", 每个"unqualified type"都有若干个qualified type. 通过与几个qualifiers : const、volatile、restrict的组合即可。
评论