C++ int,short,long

2021年8月28日 | 分类: 【概念】

数据存在不同类型

变量根据其数据类型进行分类,并确定可能存储在其中的信息种类

在这些数据类型中,整型变量只能保存整数

例如,在数字信息领域,有整数和小数,也有负数和正数,还有文字信息。例如,名称和地址被存储为字符串,它是由字符组成的。如果程序员正在编写一个程序来计算某个遥远星球距离地球的公里数,则他需要一些可以容纳很大数字的变量;如果正在设计软件来记录微观尺寸,则需要存储非常小而精确的数字。此外,如果正在编写一个必须执行成千上万次密集计算的程序,则需要将数据存储在可以快速处理的变量中。变量的数据类型决定所有这些因素。

C++ 的数据类型广义上只有两个:数字和字符。

数字数据类型分为两类:整数浮点数

整数:就是像 -2、19 和 24 这样取整的数字。
浮点数:有小数点,例如,-2.35、19.0 和 0.024。

此外,整数和浮点数据类型还有更多的分类。

为数字变量选择最佳数据类型的主要考虑因素如下:

  • 变量是需要保存整数还是浮点数值;
  • 变量需要存储的最大数和最小数;
  • 变量是需要保存符号(正数和负数)还是只需要保存无符号(只有 0 和正数)数字;
  • 存储在变量中的值所需的小数位数精度;

先来看整型数据类型。如表 1 所示,C++ 有 8 种不同的数据类型用于存储整数。它们拥有的存储数据的内存字节和可以存储的数值范围是不一样的。数据类型可以容纳的字节数称为其大小。一般来说,数据类型的大小越大,那么它可以容纳的值的范围越大。

表 1 整型数据类型
数据类型 字节大小 数值范围
short int (短整型) 2 字节 -32 768 〜+32 767
unsigned short int
(无符号短整型)
2 字节 0 〜+65 535
int (整型) 4 字节 -2 147 483 648 〜+2 147 483 647
unsigned int (无符号整型) 4 字节 0 〜4 294 967 295
long int (长整型) 4 字节 -2 147 483 648 〜+2 147 483 647
unsigned long int
(无符号长整型)
4 字节 0 〜4 294 967 295
long long int (超长整型) 8字节 -9 223 372 036 854 775 808~9 223 372 036 854 775 807
unsigned long long int
(无符号超长整型)
8字节 048 446 744 073 709 551 615

注意,超长整型和无符号超长整型是在 C++11 中引入的。

一个字节由 8 位组成。

1. 将数据存储在2个字节的内存中的数据类型可以容纳 16 位信息。这意味着它可以存储 \(2^{16}\) 位模式,即它有 65 536 种不同的 0 和 1 组合。

2. 使用4个字节内存的数据类型有 32 位,因此它可以保存 \(2^{32}\) 种不同的位模式,这意味着它有 4 294 967 296 种不同的组合。

如何使用这些不同的组合取决于数据类型。

例如:
1. 用于存储非负整数(如年龄或体重)的无符号短整型类型使用其 16 位来表示值 0〜+65 535。
2. 而和它不同的短整型数据类型则需要同时存储正数和负数,因此它使用其 16 位来表示从 -32 768〜+32 767 的值。

参考:http://c.biancheng.net/view/1318.html

2147483647

2,147,483,647(二十一亿四千七百四十八万三千六百四十七)是 2,147,483,646 与 2,147,483,648 之间的自然数。

它也是欧拉在1772年所发现的一个梅森素数,它等于 \(2^{31}-1\) ,是 32位操作系统 中最大的符号型整型常量。

二进制:111 1111 1111 1111 1111 1111 1111 1111 (31个1)
四进制:1333 3333 3333 3333
八进制:17 777 777 777
十六进制:7FFF FFFF

在32位操作系统中,由于是二进制,其能最大存储的数据是1111111111111111111111111111111(31个1)。正因为此,体现在 Windows操作系统中的十进制应该为 2147483647 。