【问题标题】:Expression must be an L value表达式必须是 L 值
【发布时间】:2017-02-10 19:58:09
【问题描述】:

我正在尝试制作一个可以识别直角三角形的公式。我在使用“a”和 = 符号时遇到了一些问题。

错误 1:'=';左操作数必须是左值。
错误 2:“a”。表达式必须是可修改的左值。

有什么帮助吗?

#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cmath>

 using namespace std; 


int main()
{
    int a; 
    int b;
    int c;
    cout << "Input value for A." << endl; 
    cin >> a; 
    cout << "Input value for B. " << endl; 
    cin >> b; 
    cout << "Input value for C. " << endl; 
    cin >> c; 

    a ^ 2 + b ^ 2 = c ^ 2; 
    return 0;
}

【问题讨论】:

  • a ^ 2 + b ^ 2 不是一个可赋值的表达式,这个事实有什么难理解的?
  • 你希望通过写“a ^ 2 + b ^ 2 = c ^ 2;”来完成什么?这显然是错误的,但是如果不解释您希望在这里完成的工作,就不可能有答案。此外,您知道^ 在 C++ 中是异或运算符,而不是指数吗?
  • 如果您正在测试相等性,请使用 ==

标签: c++ variables include int lvalue


【解决方案1】:

^ 运算符用于在 C++ 中进行按位异或。 您应该按照以下方式进行:

而不是a ^ 2 + b ^ 2 = c ^ 2 语句,写一个像这样的块:

    if(pow(c, 2) == pow(a, 2) + pow(b, 2))
        std :: cout << "true";
    else
        std :: cout << "false";

【讨论】:

    猜你喜欢
    • 2011-08-25
    • 1970-01-01
    • 2019-06-28
    • 2020-07-07
    • 2017-08-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-04
    • 2021-09-17
    相关资源
    最近更新 更多