c++ - 为什么 someNumber = rand() & 100 + 1; 不产生错误?
问题描述
我试图在 (1 - 100) 和要运行的代码之间生成一个随机数,但没有做我想要的。我注意到我不小心输入了&,而不是%使用 rand() 函数,编译器没有给我一个错误。到底发生了什么?为什么没有产生错误?&返回地址吗?这个错误很难找到,因为它是一个简单的错字,很容易错过。
这是错字:
unsigned int randomNumber = rand() & 100 + 1;
但这就是我要输入的内容:
unsigned int randomNumber = rand() % 100 + 1;
这是使用带有 & 的 rand()的代码,以防您希望运行它:
#include <iostream>
#include <cstdlib>
#include <ctime>
int main()
{
srand(static_cast<unsigned int>(time(nullptr)));
unsigned int randomNumber;
char again;
do
{
std::cout << "Do you want to generate a random number? (y/n) ";
std::cin >> again;
randomNumber = rand() & 100 + 1;
std::cout << randomNumber << '\n';
} while (again == 'y');
getchar();
return 0;
}
解决方案
推荐阅读
- ios - 获取 PHAsset 修改日期
- pandas - zeppelin pyspark 中没有名为 pandas 的模块
- sql - 我想要这两个查询的俱乐部以及所有信息
- amazon-web-services - AWS Sagemaker 自动扩展 | 假定角色角色没有访问权限
- oracle - 如何传递包含@作为参数的用户名
- ionic4 - Ionic 4 - 离子页面与离子组件
- sql - Oracle如何查询日期值并返回查询值前5小时的值
- python-2.7 - TensorFlow 代码阅读:`sess.run()` 除了评估还有什么作用?
- sql - ORACLE - 如何对不存在的行使用 CASE WHEN EXISTS 语句?
- postgresql - 从 postgres docker 容器中的环境变量中删除敏感信息