【问题标题】:What is the purpose of the % in the following code? [duplicate]以下代码中 % 的用途是什么? [复制]
【发布时间】:2021-07-29 18:21:53
【问题描述】:

我正在为我的大学作业制作一个蛇游戏。在 C 中。现在,我知道这不是完成任务的理想语言,但这是我的任务。我找到了一个示例代码,目前正在重写/理解它,以便我可以编写自己的工作代码。到目前为止,这很容易,而且一切都融为一体,但是对于我的一生,我无法弄清楚为什么他们在以下几行中加上了 %:

        for (i = 1; i <= 1 + rand() % 10; i++)
            food.x = 12 + rand() % (68 - 12);
        for (i = 1; i <= 1 + rand() % 10; i++)
            food.y = 12 + rand() % (28 - 12);

就上下文而言,这是在比赛场上创造食物的函数。我了解 rand 并添加这些数字(这是我的比赛场地大小),但为什么要使用模除法?它实现了什么?

【问题讨论】:

  • rand() 生成一个介于 0 和 RAND_MAX 之间的数字。 rand() % 10 生成一个介于 0 和 9 之间的数字。

标签: c arithmetic-expressions


【解决方案1】:

% 是取模运算符,在这种情况下主要用于限制值参见modulo operator wiki

f.e. 1 + rand() % 10 表示该值将是 1 + [0..9] - 所以最大值为 10。[0..9] 是模 10 的随机数,将是一个介于 0 和 9 之间的数字。

【讨论】:

    【解决方案2】:

    % 是“模”运算符,即:它是两个操作数的整数除法的余数。

    这是保证 rand() 的输出在一定范围内的一种方法。 例如:rand()%100 将介于 099

    之间

    换句话说:12 + rand() % (68 - 12) 将在 12 和 67 之间

    因为:rand()%(68-12) 介于 068-12-1

    之间

    所以:12+rand()%(68-12)1267

    之间

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-30
      • 2019-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-16
      • 2015-04-18
      相关资源
      最近更新 更多