什么操作数需要模 % 运算符?

Căt*_*rbu -2 c++

cppreference,可以说模运算符的原型T T::operator%(const T2 &b) const;来自内部类定义和T operator%(const T &a, const T2 &b);外部类定义。我不知道这里是否是我需要寻找问题答案的地方。

我从这个例子中提出的问题:

int i = 2;
float f = 4.4;

cout << f % float(i);      // ERROR
Run Code Online (Sandbox Code Playgroud)

所以:

  1. modulo 期望什么操作数类型(int?如果是,它在 cppreference 中写在哪里?)
  2. 不应该将f变量转换int为转换吗?收到的错误是invalid operands of types 'float' and 'float' to binary 'operator%'。我期望是类型int和的无效操作数float

Igo*_*nik 5

从您引用的页面开始:

3)余:对于内置的操作,lhs并且rhs必须同时具有整体或无范围的枚举类型

如果您需要计算浮点余数,则有 fmod

  • 单击帖子中的链接,按“Ctrl+F”,搜索“剩余” (5认同)