0

这是我正在制作的一个类的函数成员,它不会导致任何语法错误,只会导致语义错误。它应该生成的随机数为 0。

int Warrior::attack()
{

int hit = 0;

 switch (weapon)
{

case 6:
     hit = rand() % (5 - 1 + 1) + 1; 
     break;

case 7:
     hit = rand() % (10 - 4 + 1) + 4;
     break;

case 8:
     hit = rand() % (15 - 9 + 1) + 9;
     break;

case 9:
     hit = rand() % (20 - 14 + 1) + 14;
     break;

case 10:
      hit = rand() % (25 - 19 + 1) + 19;
      break;
 }

std::cout<< "You hit " << hit <<"!\n";

 return hit;
}

请帮忙!谢谢你~武士刀

4

1 回答 1

2

这可能是缺少defaultswitch 语句,即weapon没有触发任何switch子句。

尝试:

 switch (weapon)
{

case 6:
     hit = rand() % (5 - 1 + 1) + 1; 
     break;

case 7:
     hit = rand() % (10 - 4 + 1) + 4;
     break;

case 8:
     hit = rand() % (15 - 9 + 1) + 9;
     break;

case 9:
     hit = rand() % (20 - 14 + 1) + 14;
     break;

case 10:
      hit = rand() % (25 - 19 + 1) + 19;
      break;
default:
      throw std::exception("switch statement failed");
 }
于 2012-09-23T19:21:45.413 回答