C99标准与整型类型详解

需积分: 9 1 下载量 98 浏览量 更新于2024-09-09 收藏 8KB TXT 举报
"c99标准信息资源" C99,全称ISO/IEC 9899:1999,是C语言的一个重要标准,它在C89(也被称为C90)的基础上进行了扩展和改进。该标准详细定义了C语言的语法、类型系统、内存管理、预处理器、输入/输出以及错误处理等方面的规定。 在C99中,引入了两种新的数据类型概念:标准整数类型和扩展整数类型。标准整数类型包括我们常见的`char`, `short int`, `int`, `long int`, `long long int`以及它们的无符号版本。这些类型的大小和符号约定是根据平台的体系结构确定的,但至少要满足标准定义的最小范围。例如,`int`类型通常应能表示至少-32767到32767的整数范围。 扩展整数类型是为了支持更大范围的整数值而设计的,如`long long int`和对应的无符号类型`unsigned long long int`。这些类型提供比标准整数类型更大的表示范围,但并不是所有实现都必须支持它们。 C99标准还规定了不同整数类型之间的转换规则。对于具有相同符号(有符号或无符号)但不同整数转换排名的类型,较小类型值的范围是较大类型值范围的子集。这意味着你可以将一个较小类型的值赋给一个较大的类型,而不必担心数据丢失。 对于有符号和无符号整数类型,C99标准指出有符号整数类型的非负值范围是对应无符号整数类型的一个子集。这意味着同一个数值在两种类型中的表示形式是相同的,但是无符号类型可以表示更大的数值范围,因为它不包含负值。 无符号整数运算的一个关键特性是它们不会发生溢出。如果计算结果超出了无符号类型所能表示的最大值,那么结果会“模”这个最大值加一的结果进行计算。换句话说,计算结果会被截断到可表示的范围内,而不是导致运行时错误。 此外,C99标准还引入了三种浮点类型:`float`, `double`和`long double`,分别代表单精度、双精度和扩展精度的浮点数。这些类型提供了不同级别的精度和效率,以适应不同的计算需求。 C99标准是C语言发展的一个里程碑,它增强了类型系统,增加了对宽整型的支持,并改进了语言的许多方面,使得C语言能够更好地适应现代计算机系统的需求。