C++编译错误‘lvalue required as left operand of assignment 2’修复求助
编译错误修复方案
错误原因分析
编译错误lvalue required as left operand of assignment的根源是这两行代码:
if(m1+m2>59) x+1 && y=y-60; if(s1+s2>59) y+1 && z=z-60;
x+1是临时表达式结果,不属于可被赋值的左值(lvalue),不能放在赋值操作的左侧。&&是逻辑与运算符,用于条件判断,不是用来串联执行多条赋值语句的语法。你想同时执行x+1(实际应为x +=1)和y=y-60,但用错了语法。
修复后的代码
#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(y > 59) { x += 1; y -= 60; } // 处理秒进位到分钟,同时检查分钟是否需要再次进位 if(z > 59) { y += 1; z -= 60; if(y > 59) { x += 1; y -= 60; } } cout << x << " " << y << " " << z << endl; }
额外优化说明
- 直接用
y>59判断分钟是否进位,比重复计算m1+m2更高效。 - 补充了秒进位后分钟可能超过59的二次进位处理,避免逻辑漏洞。
- 输出时添加空格分隔,结果可读性更强。
内容的提问来源于stack exchange,提问作者zxcmaxik
相关产品推荐
相关产品推荐

