gpt4 book ai didi

c++ - 为什么输出进入无限循环

转载 作者:行者123 更新时间:2023-11-30 03:25:01 38 4
gpt4 key购买 nike

如果我使用 nounce = 32766 它只给出 1 次输出但是对于 32767 它会进入无限循环..... 为什么?当我使用 int 时发生同样的事情

#include<iostream>
using namespace std;

class Mining
{
short int Nounce;
};

int main()
{
Mining Mine;
Mine.Nounce = 32767;

for (short int i = 0; i <= Mine.Nounce; i++)
{
if (i == Mine.Nounce)
{
cout << " Nounce is " << i << endl;
}
}
return 0;
}

最佳答案

当您使用可能的最大正值时,每隔一个值将为 <=到它,所以这个循环永远持续下去:

for(short int i=0;i<=Mine.Nounce;i++)

您可以看到 32767 是 short 的最大值在您的平台上使用 numeric_limits :

std::cout << std::numeric_limits<short>::max() << std::endl; //32767 

i达到 32767,i++将尝试增加它。这是未定义的行为,因为有符号溢出,但是大多数实现(显然像你自己的)将简单地翻转到最大负值,然后 i++将愉快地再次增加。

关于c++ - 为什么输出进入无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49260114/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com