【问题标题】:What is the difference between % and / in C?C中的%和/有什么区别?
【发布时间】:2014-03-01 17:45:54
【问题描述】:

我是 C 新手,并意识到我不太了解 /% 之间的区别。如果您能向我解释这一点,那将非常有帮助。谢谢!

【问题讨论】:

  • 这是一个 C 问题,不是 Objective-C 特定的。
  • 维基百科对%有很好的解释:en.wikipedia.org/wiki/Modulo_Operation
  • 阅读一本书或其他一些学习材料。所以不是问这种问题的地方

标签: c math operators


【解决方案1】:

取决于这些在哪里被使用,它们在不同的上下文中意味着不同的东西

如果你在做算术,那么 / 表示除,而 % 表示 mod。

/除法是正常除法的工作方式

% 将为您提供除法的余数,例如 5 % 2 = 1,因为 2 进入 5 两次,余数为 1。

这对所有语言也几乎通用(可能有一些我不知道的例外情况)

【讨论】:

  • % 只是余数,而不是 mod。例如。 -5 % 3 从除法中产生余数,-2,但数学家通常更喜欢“模”结果为 1。
【解决方案2】:

“/”用于除法,“%”用于计算余数

例如

int a = 10;
int b = 3;

int divisionResult = a / b; //it's 3
int reminderResult = a % b; // it's 1 (which is the remainder of the division)

【讨论】:

  • % 是余数,而不是模数。例如。 -5 % 3 从除法中产生余数,-2,但数学家通常更喜欢“模”结果为 1。
  • @EricPostpischil 感谢您的评论 - 我已经更新了我的答案。但是我认为与模运算符和提醒运算符的区别仅在于符号:对于余数运算符,结果的符号与被除数的符号相同,而对于模运算符,结果的符号与除数。为什么 -5 % 3 的“模”会是 1?
  • 1 和 -5 之间的距离是 6,是 3 的倍数。对于数学家来说,模同余根据模的倍数将整数分组为子集。对于 3,子集是 { …, -6, -3, 0, +3, +6,… }, { …, -5, -2, 1, 4, 7,… } 和 { … -4, -1, 2, 5, 8,…}。对于数学家来说,“x 模 3”的实际“事物”是子集本身,而不是它的任何特定成员。但是,我们可以使用任何成员来表示子集。选择介于 0 和模数(包括 0,不包括模数)之间的成员通常很有用,只是因为它使一些事情变得更简单。
  • 例如,如果我们想在一个数组中记录关于同余的信息,我们希望数组索引是 0、1、2,而不是 -1、0、1。这主要是为了方便并且不是非常重要,因为有一些方法可以解决它。但特别烦人的是% 不会返回给定模子集的唯一结果。例如,-5 和 1 模 3 是全等的,所以我们希望 -5 mod 31 mod 3 产生相同的东西,但 -5 % 3 产生 -2 和 1 % 3 产生 1。这很麻烦。跨度>
【解决方案3】:

/ 是除法,%是模块,除法的整数余数。

【讨论】:

    【解决方案4】:

    / 用于除法,% 用于模数。

    例子:

    5 / 2 = 2
    5 % 2 = 1
    

    【讨论】:

      【解决方案5】:

      a / b 是商。

      a % b是余数,也就是一个mod b。

      【讨论】:

        猜你喜欢
        • 2011-04-05
        • 2011-10-18
        • 1970-01-01
        • 2010-09-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-13
        • 1970-01-01
        相关资源
        最近更新 更多