-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;
}
4

2 回答 2

1

这是按位和运算符。它需要两个数字,然后它“和”它们的位。

例如:3 & 102

 0011
&1010
 ----
 0010
于 2019-10-19T05:57:52.370 回答
1

没有错误,因为它是完全合法的表达方式。调用的结果rand()按位和ed 的结果100 + 1

于 2019-10-19T06:00:11.470 回答