c++ 需要左值作为赋值2的左操作数

zxlwwiss  于 2022-12-05  发布在  其他
关注(0)|答案(1)|浏览(133)
#include <iostream>
using namespace std;
int main()
{
    int g1, m1, s1, g2, m2, s2, x, y, z;
    cin >> g1 >> m1 >> s1 >> g2 >> m2 >> s2;
    x=g1+g2;
    y=m1+m2;
    z=s1+s2;
    if(m1+m2>59) x+1 && y=y-60;
    if(s1+s2>59) y+1 && z=z-60;
    cout << x << y << z;
}

我是C++新手,不知道如何修复它,有人能帮助我吗?

klr1opcd

klr1opcd1#

问题在于表达式中的赋值运算符=has the lowest precedence

if(m1+m2>59) x+1 && y=y-60;
if(s1+s2>59) y+1 && z=z-60;

因此,编译器会看到如下的运算式:

(x + 1 && y) = (y - 60);
(y + 1 && z) = (z - 60);

(x + 1 && y)(y + 1 && z)的结果不能赋值,因为它是右值。
相反,您可能希望在计算&&的结果之前进行赋值:

if(m1 + m2 > 59) x + 1 && (y = y - 60);
if(s1 + s2 > 59) y + 1 && (z = z - 60);

相关问题