C ++:表达式必须是可修改的左值

时间:2016-08-10 20:40:34

标签: c++ math trigonometry math.h cmath

我正在制作基于文本的简单操作/触发计算器。我收到错误:"表达式必须是可修改的左值"当我试图平方变量时。这是我当前的代码:(错误突出显示sqrt)

double a, b, result;

cout << "Please enter your two side lengths (ex:12 5)";
cin >> a, b;
sqrt(pow(a, 2) + pow(b, 2)) = result;

cout << result << endl;

对于任何格式错误道歉,首先在这里询问任何帮助表示赞赏。谢谢!

4 个答案:

答案 0 :(得分:3)

首先,cin >> a, b does not do what you think it's doing。你最好写cin >> a >> b

然后,将数据分配给变量,而不是变量分配给数据。 result = sqrt(...)也是。$command = "myexecutable.exe my command line params" Invoke-Expression $command -OutVariable output -ErrorVariable errors Write-Host "STDOUT" Write-Host $output Write-Host "STDERR" Write-Host $errors

答案 1 :(得分:2)

你已经转换了作业。您正在尝试为sqrt函数分配result的值;您希望将结果分配给sqrt输出的值:

double a, b, result;

cout << "Please enter your two side lengths (ex:12 5)";
cin >> a, b;
result = sqrt(pow(a, 2) + pow(b, 2));

cout << result << endl;

答案 2 :(得分:1)

cin语句修改为cin >> a >> b;,这会一次读取多个值,因为cin不存在逗号运算符。另外,将赋值右侧的结果变量的顺序切换到左侧。分配上=的两个操作数是l值,代表左值,应该在左侧,而r值代表右值,应该在右侧。切换它们,就会出错。

您的新修改代码

double a, b, result;

cout << "Please enter your two side lengths (ex:12 5)";

cin >> a >> b; //<-- See '>>' here

//sqrt(pow(a, 2) + pow(b, 2)) = result; <-- switch these to...

result = sqrt(pow(a, 2) + pow(b, 2)); //<-- ...this
cout << result << endl;

Live Example

答案 3 :(得分:1)

主要问题是您的代码的行号45

cin >> a,b;错了。您可以在此行cin >> a >> b;

中添加多个输入

在第5行,你正在以错误的顺序进行作业。你应该以{{1​​}}

的方式反转它result