代码之家  ›  专栏  ›  技术社区  ›  khallad sayed

在%上,C++表达式必须具有整型或无范围枚举类型

  •  -1
  • khallad sayed  · 技术社区  · 1 年前

    在这段代码中,我将这段代码的剩余部分定义为浮点数据类型,但编译器拒绝了这一点,并假设将其定义为整数类型,这是造成这个问题的原因吗? enter image description here

    int main()
    {
    
        float days, hours, minutes, seconds;
        float Totalseconds;
        float Remainder;
        float secondsperday;
        float secondsperhour;
        float secondsperminute;
    
        secondsperday = 24 * 60 * 60;
        secondsperhour = 60 * 60;
        secondsperminute = 60;
    
    
        cout << "Enter total seconds\n";
        cin >> Totalseconds;
    
        days = floor(Totalseconds / secondsperday);
        Remainder = (Totalseconds % secondsperday);
    
        hours = floor(Remainder / secondsperhour);
        Remainder = Remainder % secondsperhour;
    
        minutes = floor(Remainder / secondsperminute);
        Remainder = Remainder % secondsperminute;
    
        seconds = Remainder;
    
        cout << days << ":" << hours << ":" << minutes << ":" << seconds;
    
    
        return 0;
    }
    
    1 回复  |  直到 1 年前
        1
  •  0
  •   Jan Schultke    1 年前

    表达式在%上必须具有整型或非量程枚举类型

    浮点数字,如 float 没有 % C++中的运算符。 它们既不是整数(例如 int )也不是无范围枚举(即。 enum ),所以您收到了此错误。

    如果您想要一个与 % 操作员,您可以使用 std::fmod 以下为:

    Remainder = std::fmod(Totalseconds, secondsperday);
    

    然而,在您的代码中,似乎没有一个数字必须是 浮动 (除非 Totalseconds 例如可以是123.456)。 如果您只是简单地更改了 浮动 类型为 整数 ,此代码也将编译。