Tag: 赋值 运算符

在C中评估赋值运算符的左操作数有什么意义?

根据ISO C11 – 6.5.16.3,它说 赋值运算符将值存储在左操作数指定的对象中。 赋值表达式在赋值后具有左操作数的值,但不是左值。 赋值表达式的类型是左值操作数在左值转换后将具有的类型。 在左右操作数的值计算之后,对更新左操作数的存储值的副作用进行排序。 对操作数的评估是不确定的。 所以我猜这意味着,例如, int x = 10; x = 5 + 10; 左操作数x计算为10,右操作数计算为15。 右操作数值存储在左操作数x指定的对象中。 但是如果赋值的目的是存储右操作数的evalauted值(就像在step2中那样),为什么左操作数的评估是必要的? 评估左操作数有什么意义?