阴阳神万物主 发表于 2018-2-2 17:47:07

可能是关于pow()函数的问题?

唉先上代码

void d1(double cd){
        double turn=0,endtm,tm=time(NULL);
        while(1){
                srand((unsigned)time(NULL));
                double a= pow(10,cd-1)+rand() % pow(10,cd);
        }
}
报错: invalid operands of types 'int' and '__gnu_cxx::__promote_2<int, int, double, double>::__type {aka double}' to binary 'operator%'
求解QAQ

人造人 发表于 2018-2-2 18:07:42


404NOT 发表于 2018-2-2 18:08:13

本帖最后由 404NOT 于 2018-2-2 18:10 编辑

因为取余号 % 后面一定要是整型!再补充一下,前面也要是整型 或者枚举类型%运算符没有为double类型定义。像“&,^,|,〜,<<,>>”这样的按位运算符也是如此!{:10_297:}

BngThea 发表于 2018-2-2 18:31:21

把%后面的东西用int进行强制转换

boot 发表于 2018-2-2 18:46:11

double a= pow(10,cd-1)+rand() %(int)pow(10,cd);
来一手强制类型转换

阴阳神万物主 发表于 2018-2-2 23:47:41

404NOT 发表于 2018-2-2 18:08
因为取余号 % 后面一定要是整型!再补充一下,前面也要是整型 或者枚举类型%运算符没有为double类型定 ...

多谢兄台(抱拳)改成【5#】的样式就能编译了

阴阳神万物主 发表于 2018-2-2 23:48:46

boot 发表于 2018-2-2 18:46
double a= pow(10,cd-1)+rand() %(int)pow(10,cd);
来一手强制类型转换

多谢多谢(抱拳并几乎不可见地点了一下头)
页: [1]
查看完整版本: 可能是关于pow()函数的问题?