error: invalid operands of types 'double' and 'int' to binary 'operator%'

在一次C++的练习中,我发现了这个问题,并在网上查找到了原因,特在此记录下来。

1️⃣ 基本

从字面意思来看就是说,类型intdouble为二进制运算符的无效操作数。这是因为对于取模运算符 %,你的操作数只能是整型的,也就相当于没有为double类型定义%运算符。所以当你的取模运算中包含非整型数据时,类似这样:

int a=2;
cout<<11.0 % a<<endl;

就会报错。

但是当你的取模运算中一定要有double类型数据时,可以考虑如下代码:

#include<math.h>
int a=2;
cout<<fmod(11.0 , a)<<endl;

2️⃣ 拓展

其实,不仅仅是取模运算未对double类型定义,诸如&,^,|,~,<<,>>之类的按位运算符也是这样。

3️⃣ 更多

这里