在 C 编程语言中,最常见的关键字“int”用于定义任何正整数或负整数。但是整数和可以在关键字“int”的帮助下表示的数字之间存在差异。并非每个整数都可以用关键字“int”表示。根据 MinGW 的说法,一个“int”的大小是 4 字节,等于 32 位(1 字节=8 位)。'int' 可以表示整数或 'int' 用于表示整数在某处仍然是一个神话。整数是一个非常庞大的数字类别,而一个“int”具有有限且精确的内存量(“int”的大小为 4 个字节或 32 位)来存储它所表示的内容。
有符号整数
C 语言中的“int”类型变量只能存储直到 2147483647 的数字。超过这个数字“int”无法精确存储,甚至无法正确存储。'int' 是 32 位数据类型。每当将数字分配给“int”类型变量时,首先将其转换为其二进制表示形式(即 0 和 1),然后将其保存在内存中的特定位置。“int”实际上是 1 个符号位 + 31 个数据位,即 31 位可用于存储分配给“int”类型变量的数字,而保留 1 位用于维护数字的符号,即 + 或-. 符号也用二进制数字表示,0 表示正号,1 表示负号。
让我们通过例子来理解这一点。
示例 -考虑,
此时,第一个 2147483647 将转换为其二进制形式,其等于:
11111111111111111111111111111111。
111111111111111111111111111111 是一个 31 位的二进制数,它将被分配给变量 num 最右边的 31 位,第 32 位将有一个零(0),因为分配给变量 num 的数字是一个正数。如果我们尝试将任何大于 2147483647 的数字存储到“int”类型变量中,那么我们将丢失信息。
无符号整数
对于无符号整数,只能存储正数。在这种数据类型中,所有 32 位都将保留用于存储数据。因此,可以存储的最大值是 4294967295。无符号整数的格式说明符是“%u”。
可以存储在无符号整数中的最大值的计算
(1111111111111111111111111111111)₂ = (1 × 2³¹) + (1 × 2³⁰) + (1 × 2²⁹) + (1 × 2²⁸) + (1 × 2²⁷) + (1 × 2²⁷) + (1 × 2²⁷) + (1 × 2³¹) + (1 × 2³⁰) 2²⁴) + (1 × 2²³) + (1 × 2²²) + (1 × 2²¹) + (1 × 2²⁰) + (1 × 2¹⁹) + (1 × 2¹⁸) + (1 × 2¹⁷) + (1 × 2¹⁶) + (1 × 2¹⁵) + (1 × 2¹⁴) + (1 × 2¹³) + (1 × 2¹³) + (1 × 2¹²) + (1 × 2¹¹) + (1 × 2¹⁰) + (1 × 2⁹) + (1 × 2⁸) + ( 1 × 2⁷) + (1 × 2⁶) + (1 × 2⁵) + (1 × 2⁴) + (1 × 2³) + (1 × 2²) + (1 × 2¹) + (1 × 2⁰) = (4294967295) ₁₀
int num=2147483647;