【问题标题】:How do you use the "%" operator in C++?如何在 C++ 中使用“%”运算符?
【发布时间】:2011-02-04 05:16:54
【问题描述】:

我必须花几天时间将它们转换成周数和天数。

我知道我必须使用% 运算符,但我该如何使用它呢?

【问题讨论】:

    标签: c++ visual-c++ operators


    【解决方案1】:

    % 是模(余数)运算符。在您的情况下,请尝试:

    int weeks = total_days / 7;
    int remaining_days = total_days % 7;    
    

    【讨论】:

      【解决方案2】:

      奇怪的是,当人们提出问题时说“我知道”,他们往往是错的。您根本不需要模数 (%)。

      int weeks = total_days / 7;
      printf("%d days is equal to %d weeks and %d days.\n",
             total_days, weeks, total_days - weeks*7);
      

      【讨论】:

      • 虽然使用模数更简单更快。
      • @TheBigO,也许更简单,但模数实现在内部使用相同的公式,并且可能会重复除以 7,除非编译器优化非常好。
      • @Karl:一些 CPU 可以用一条指令同时求商和余数。但这里是除以一个常数,所以如果编译器优化得好,它会使用乘以一个幻数和位移来计算weeks,并且在任何地方都不需要整数除法。 @TheBigO:编译器可以很好地将total_days % 7 优化为相同的代码。我不使用模数的主要目的是挑战提问者思考问题,并告诉我们使用模数是家庭作业要求还是仅仅是“他所听到的需要”。
      【解决方案3】:

      实际上,您可以将总天数除以 7,得到周数。 那么你可以用 7 对总天数进行取模,然后得到剩余的天数。 这还不够吗

      【讨论】:

        【解决方案4】:

        % (模运算符)为您提供余数。因此,days % 7 将为您提供转换为周后剩余的天数。即,如果 days = 15,则 days % 7 将等于 1。

        【讨论】:

          猜你喜欢
          • 2012-11-05
          • 2010-12-13
          • 2017-07-28
          • 2019-06-28
          • 2013-01-26
          • 2012-09-06
          • 1970-01-01
          • 1970-01-01
          • 2012-05-21
          相关资源
          最近更新 更多