编译时给出错误类型为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;
答案 0 :(得分:2)
pow
函数没有整数结果重载。
因此结果是浮点类型,特别是double
类型,而C ++ %
运算符只接受整数参数。
您可以使用fmod
函数计算浮点类型参数的余数,或者可以计算整数幂,例如:为x*x*x
。
请注意,如果 是整数结果pow
,那么子表达式
pow(x,3)*8%2
...总是会产生0。
你能明白为什么吗?
答案 1 :(得分:1)
如果您将import React from 'react';
import {
AppRegistry,
View
} from 'react-native';
import filterData from './filter';
import PopoverFilter from './PopoverFilter';
class MyApp extends React.Component {
render () {
return (
<View>
<PopoverFilter filterData={filterData.filter.track} />
</View>
);
}
}
AppRegistry.registerComponent('MyApp', () => MyApp);
的分配减少到此:
R
然后更清楚的是问题是R = pow(x, 3) % 2;
返回std::pow
而double
是2
。使它们成为相同类型的一种可能解决方案是假设int
:
std::pow
在您的示例中,您将R = (int)pow(x, 3) % 2;
乘以pow(x, 3)
,但结果仍为双倍