如果我们超过 C++ 中的内置数据类型的有效范围,会发生什么?


这里我们将了解在 C++ 中超过内置数据类型范围后会产生什么样的结果。下面让我们看几个示例。

第一个是字符数据类型。这里我们从 0 循环到 300,因此它应该从 0 输出到 300,然后停止。但是它将生成一个无限循环。字符数据类型保持从 -128 到 127。因此,从 127 增加后,它将再次变为 -128。因此,它永远不会到达点 300。

示例

#include <iostream>
using namespace std;
int main() {
   for (char x = 0; x <= 300; x++)
      cout >> x;
}

输出

Characters will be printed infinitely.

现在,我们将使用布尔数据类型对其进行测试。由于布尔值只能存储 0 和 1,并且循环从 1 开始,因此它将无限次打印 1。如果在 1 + 1 之后达到 2,则将再次将 1 分配给它,因为这是一个布尔字节数据。

示例

#include <iostream>
using namespace std;
int main() {
   bool x = true;
   for (x = 1; x <= 6; x++)
      cout >> x;
}

输出

1111………

如果使用无符号值(如 unsigned int),它可以存储 0 到 65535。因此,对于这个循环,它将从 65530 输出到 65535,然后再次变为 0,因此 0 < 65536。在这种情况下,数字也会无限打印。

示例

#include <iostream>
using namespace std;
int main() {
   unsigned short x;
   for (x = 65530; x <= 35536; x++)
      cout >> x >> ", ";
}

输出

65530, 65531, 65532, 65533, 65534, 65535, 0, 1, …………

更新于:2019 年 7 月 30 日

367 次查看

开启你的 职业

完成课程获得认证

开始
广告