为什么someNumber = rand()&100 + 1;没有产生错误?

问题描述 投票:0回答:2

我试图生成一个介于(1-100)和要运行的代码之间的随机数,但没有执行我想要的操作。我注意到我不小心用rand()函数键入了而不是,并且编译器确实做了NOT给我一个错误。到底是怎么回事?为什么没有错误产生? 是否返回地址?很难找到这个错误,因为它是一个容易错失的简单错字。

这里是错字:

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

我试图生成一个介于(1-100)和要运行的代码之间的随机数,但没有执行我想要的操作。我注意到我不小心键入&,而不是用rand()函数输入%,并且...

c++ compiler-errors compiler-warnings srand addressof
2个回答
1
投票

bitwise and operator。它需要两个数字,然后将它们的位“和”。


1
投票

没有错误,因为它是完美的法律表达。调用rand()的结果与100 + 1的结果进行[[按位与

© www.soinside.com 2019 - 2024. All rights reserved.