【问题标题】:Invalid operands to binary % (have float and float)二进制 % 的无效操作数(具有浮点数和浮点数)
【发布时间】:2015-11-17 13:36:59
【问题描述】:

下面是我的代码:

#include <stdio.h>

int main ( )   
{
    float a = 5,b = 2;    
    int c,d;    
    c = a % b;
    d = a/2;    
    printf("%d\n",d);    
    return 0;
}

当我尝试编译这个时,我得到了

“二进制 % 的无效操作数”

在第 6 行。我该如何解决?

【问题讨论】:

    标签: c modulo


    【解决方案1】:
     c = a % b;
    

    您不能将float 用作% 运算符的操作数。

    改用math.h中的fmod

    double a=5,b=2,c;
    c=fmod(a,b);                 // it returns double
    

    【讨论】:

      【解决方案2】:

      正如其他人已经提到的,您对模运算符的操作数类型有疑问。模运算符需要int 类型的操作数。

      要添加一些参考,引用C11 标准,第 §6.5.5 章,乘法运算符

      [..] % 运算符的操作数应 有整数类型。

      【讨论】:

        【解决方案3】:

        您不能对浮点参数使用模 (%)。也许你想做:

        c = (int) a % (int) b;
        

        【讨论】:

          【解决方案4】:

          模运算符 % 用于整数,您使用过浮点数。

          您可以使用fmod(a,b)#include &lt;cmath&gt;

          【讨论】:

            【解决方案5】:

            你确定它在第 6 行吗?更有可能是那句话

            c = a % b;

            因为 % 只需要整数值,而不是浮点数。如果你真的想让 a 和 b 成为浮点数,你可能需要做一些转换。

            【讨论】:

              猜你喜欢
              • 2014-11-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2017-06-16
              • 2017-01-05
              相关资源
              最近更新 更多