相关疑难解决方法(0)

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

根据ISO C11 - 6.5.16.3,它说

  1. 赋值运算符将值存储在左操作数指定的对象中.赋值表达式在赋值后具有左操作数的值,但不是左值.赋值表达式的类型是左值操作数在左值转换后将具有的类型.在左右操作数的值计算之后,对更新左操作数的存储值的副作用进行排序.对操作数的评估是不确定的.

所以我想这意味着,例如,

int x = 10;
x = 5 + 10;
Run Code Online (Sandbox Code Playgroud)
  1. 左操作数x计算为10,右操作数计算为15.
  2. 右操作数值存储在左操作数指定的对象中x.

但是如果赋值的目的是存储右操作数的evalauted值(就像在step2中那样),为什么左操作数的评估是必要的?评估左操作数有什么意义?

c evaluation assignment-operator

17
推荐指数
2
解决办法
1171
查看次数

标签 统计

assignment-operator ×1

c ×1

evaluation ×1