将运算符 ^ 与“double”操作数一起使用会发出编译器错误

Using operator ^ with `double` operands emits compiler error

本文关键字:错误 编译器 一起 操作数 运算符 double      更新时间:2023-10-16

我想出了一些代码,但它无法编译。

错误

1 错误 C2296:"^":非法,左操作数的类型为"double"
2 智能感知:表达式必须具有积分或枚举类型

我能够想出的代码如下:

#include<iostream>
#include<cmath>
using namespace std;
void getnumbers();
void showmean();
void showdev();
double x1, x2, x3, mean, dev;
void getnumbers()
{
    cout<<"Please enter three numbersn";
    cin>>x1,x2,x3;
}
void showmean()
{
    mean=(x1+x2+x3)/3;
    cout<<"The mean of"<<x1<<", "<<x2<<", "<<x3<<" is "<<mean<<endl;
}
void showdev()
{
    dev=sqrt((x1 - mean)^2) + (x2 - mean)^2 + (x3 - mean)^2/3;
    cout<<"The standard deviation of"<<x1<<", "<<x2<<", "<<x3<<" is "<<dev<<endl;
}
int main()
{
    getnumbers();
    showmean();
    showdev();
    system("pause");
    return 0;
}
  1. 你不能在C++中拥有这样的权力

    • 使用 std::pow()x*x 进行数学运算 x2
  2. 对于多个输入,它是cin >> x1 >> x2 ...etc

  3. 在你的SD方程中,我认为你的接近参数在数学上处于错误的位置。

    • 它应该是SD = sqrt( (x*x + y*y) / z ).您的接近参数使其成为 x + y*y/3(或 y2/3,忘记优先级)

除了用于对值进行平方的不正确运算符和缺少括号之外,给定的程序没有完成赋值中表示函数应返回计算值的部分。例如:

double calculate_mean()
{
    return (x1+x2+x3)/3;
}