整数溢出如何修改,ace =(int)(rand()*6/(RAND_MAX+1))+1; 这咋办呢

#include
#include
#include
using namespace std;

class Dice
{
public:
void Fling();
int GetAce();
private:
int ace;

};
class Game
{
public:
void Play();
Game ();

private :
Dice dice1;
Dice dice2;
bool Judge();

};

void Dice::Fling()
{
ace =(int)(rand()*6/(RAND_MAX+1))+1;

}
int Dice::GetAce()
{
return ace;
}
Game::Game ()
{
srand(time (NULL));

}
void Game::Play()
{
dice1.Fling();
cout <<"Generate"<
dice2.Fling();
cout<<"Generate"<

if (Judge())
cout <<"Won!"<
else
cout <<"Fail"<

}

bool Game ::Judge()
{
if (dice1.GetAce()+dice2.GetAce()==7);
return true;
else
return false;

}

int main()
{
Game game;
game.Play();

return 0;

}

int 改成 long不行吗?

ace =(int)(rand()*6/(RAND_MAX+1))+1;

改为

ace =(int)((double)rand()/(RAND_MAX+1) * 6) + 1;
不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

我很好奇你这句想要实现什么功能。可以用 int64 接收随机数并进行计算。