类型"double"和"int"的操作数无效到二进制"运算符%"
invalid operands of types `double' and `int' to binary `operator%'
编译时给出double ' and
类型int '到二进制' operator % '的错误无效操作数
int x, y, z;
float R;
cout <<"Ejercicio N 2"<<endl;
cout <<"De la expresion: R=(x^3*8MOD2DIVY/(3+x^2))/(8-z/7-y*11MOD2) suministrar el valor de tipo entero X,Y,Z"<<endl;
cout <<"Ingrese el valor de X: "; cin>> x;
cout <<"Ingrese el valor de Y: "; cin>> y;
cout <<"Ingrese el valor de Z: "; cin>> z;
R=(pow(x,3)*8%2/y/(3+pow(x,2)))/(8-z/7-y*11%2);
cout <<"La respuesta es: "<<R<<endl<<endl<<endl;
pow
函数不存在整数结果过载
因此结果是浮点类型,特别是double
类型,而c++ %
操作符只接受整数参数。
您可以使用fmod
函数来计算浮点型参数的余数,或者您可以计算整数幂,例如x*x*x
。
请注意,如果是一个整数结果
pow
,那么子表达式
pow(x,3)*8%2
白马王子;总是产生0
你知道为什么吗?
如果您将R
的分配减少为:
R = pow(x, 3) % 2;
那么更清楚的是,问题是std::pow
返回double
, 2
是int
。使它们具有相同类型的一个可能解决方案是将std::pow
:
R = (int)pow(x, 3) % 2;
在您的示例中,您将pow(x, 3)
乘以8
,但结果仍然是双精度
相关文章:
- 错误:类型"double()"和"double()"的操作数无效到二进制&quo
- 二进制表达式的操作数无效 - 使用 for 和迭代器
- int* 和 int[] 类型对二进制运算符 + 的操作数无效
- 错误:二进制'operator*' 'float'和'float[0]'类型的操作数无效
- 类型"int"和"const char [15]"到二进制"运算符<<"的无效操作数^
- 二进制表达式 cout 问题的无效操作数
- c++ 错误:二进制"运算符+"类型"矩阵*"和"矩阵*"的操作数无效
- QTextStream的操作数到二进制的转换无效
- 二进制'operator+' 'int*'和'int*'类型的无效操作数
- 我收到一个错误无效的操作数,类型为 const char [42] 和二进制"运算符+"的双倍数
- 二进制表达式的操作数无效?
- 二进制表达式的操作数无效("常量字符*"和"常量字符*")
- 如何修复"二进制表达式的无效操作数"?
- 没有变量声明为函数,但错误:二进制表达式的操作数无效
- 如何修复此错误:二进制表达式的操作数无效("std::vector<double>"和"double")?
- 如何将无效操作数修复为二进制表达式
- 错误:二进制表达式的操作数无效(映射使用查找函数错误)
- C++:"错误:类型'const char*'和'const char [28]'的操作数无效到二进制'ope
- 无效的操作数是二进制表达人和人
- 错误:二进制表达式('float' 和 'float')返回的无效操作数 (x & (1 << 31)) == 0