double a=22;int i=0;​i=a%11;为什么有错?
1个回答

求余 符号 只能用于 整形 .

a 是 double 型的.

% 求余符号,二元操作符

即拥有两个操作元/操作数,也可以叫 二目、两目

有个三目运算符 :" 举例 => int a = b > c b :c; )

% 的两个操作元 默认 必需是 整形.

int、short int、unsigned int.有的语法里,char bool 也算整形,因为它们的数据范围(这里用“值空间”可能更好理解)属于 int 的值空间.

double 的数据范围(也可以说是精度)明显大于int,所以无法自动转换为 int .

你可以把运算符当成函数(或者叫方法).二元运算符就是带两个参数的函数:

int qiuyu(int a,int b) { ...}

某些高级语言允许重载运算符,如C++,因此可以通过重载使 % 支持非整形数据.

int qiuyu(double a,double b) { return (int)a % (int)b ; }

这样的.