c++ - 为什么我的 rand() 数字显示为 0?

标签 c++ visual-studio-2010

这是我正在创建的类的函数成员,它不会导致任何语法错误,只会导致语义错误。它应该生成的随机数为 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;
}

请帮忙! 谢谢你, ~武士刀

最佳答案

这可能是缺少 default switch 语句,即 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");
 }

关于c++ - 为什么我的 rand() 数字显示为 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555453/

相关文章:

visual-studio-2010 - VS 2010 安装项目需要 .NET 4.0,但已安装

visual-studio-2010 - 此安装不支持项目 {BC8A1FFA-BEE3-4634-8014-F334798102B3}

visual-studio-2010 - Web 应用程序和网站项目之间的区别

python - 在 Cython 中包装自定义类型 C++ 指针

c++ - 读取bmp文件中的像素值

c++ - 在双向链表中使用指针交换节点

sql-server - 使用 SQL CE 4 进行用户数据存储

visual-studio-2010 - visual studio 2010 中的 Metro 风格应用程序?

c++ - 如何优化这种组合算法?

c++ - gcc Boost 模板结果为 "defined in discarded section"