类型为`double'的无效操作数和`int'二进制`operator%'

时间:2016-06-25 04:35:33

标签: c++

编译时给出错误类型为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;

2 个答案:

答案 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::powdouble2。使它们成为相同类型的一种可能解决方案是假设int

的结果
std::pow

在您的示例中,您将R = (int)pow(x, 3) % 2; 乘以pow(x, 3),但结果仍为双倍