这是一个愚蠢的问题,但我很难过。以下两个C ++语句是否相同?
regWages = regPay + overTime;
regPay + overTime = regWages;
答案 0 :(得分:4)
没有。一个是有效的,另一个不是。 (也许。*)
您通常只能分配给 lvalues ,这些是同义词,您可以指定的内容。算术表达式的结果通常不是您可以分配的内容。
更简单:a = 1 + 2
没问题,但1 + 2 = a
不是。您可以为a
提供一个值,但不能为整数添加值提供结果。
C ++中的赋值是一种状态变化。它与“方程式”的数学概念非常不同。 C ++中的赋值更像是数学中的定义,但与数学不同,您可以将值重新分配给现有对象。
*)运算符重载会使图像稍微复杂化。
答案 1 :(得分:0)
要解决您的疑问,您应该了解ome导入概念:Lvalues and Rvalues
在您的代码中,regWages = regPay + overTime;
是正确的,因为如果变量regWages
是Lvalues,则它是非临时对象,您可以执行=
操作。
regPay + overTime = regWages;
错误,因为regPay + overTime
的结果是Rvalues,只是一个临时变量,你无法进行=
操作。
答案 2 :(得分:0)
这很有趣,但两个运算符都可以有效,具体取决于对象的类型定义。
regWages = regPay + overTime;
regPay + overTime = regWages;
但从语义上讲它们是不同的,赋值运算符不是对称的。