如果我们超过 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, …………
广告