C:符号x = y 意味着什么?
我试图将另一个作者的一段C代码重写为Python,我遇到了以下类型的符号:
x = y[a=b];
其中y
是数组, a
和b
是整数。 起初我认为这意味着:
a = b; x = y[a];
但显然它没有。 谁能告诉我这个表达意味着什么? 如果这个问题是重复的,请原谅我,但很难用几个可搜索的关键字来总结这个问题,而且我找不到任何能回答我问题的问题。
我试图重写的代码的来源: 链接
编辑:
Python重写的代码不能正常工作(卡在循环中),所以我认为我误解了上面的语句。 但正如你们几位建议的那样,首先是正确的。 那我一定是别的……
x = y[a=b];
和
a = b; x = y[a];
是等价的。 表达式a=b
具有赋值后左操作数的值。
我认为你其实是对的,这意味着:
a = b; x = y[a];
a = b
在将b
分配给b
后返回b
。 因此y[a=b]
将返回y[b]
但也将b
分配给b
。
编辑
在你的评论中你说,“如果a = 1且b = 3,那么它解析为y [3],a = 3且b = 3”。
这正是上面的代码所做的:
在开始时, a
等于1
, b
等于3
。
a = b;
现在a
包含3
和b
仍然包含3
。
x = y[a];
现在x
已经被分配了y[3]
的值, a
仍然包含3
而b
仍然包含3
。