C:符号x = y [a = b]意味着什么?

时间:2014-08-14 14:31:25

标签: c

我正在尝试将另一位作者的一段C代码重写为Python,我遇到了以下类型的符号:

x = y[a=b];

其中y是一个数组,ab是整数。起初我认为它意味着这样的事情:

a = b;
x = y[a];

但显然它并没有。谁能告诉我这个表达意味着什么?请原谅我,如果这个问题是重复的,但很难用几个可搜索的关键词来总结这个问题,而且我找不到任何可以回答我问题的内容。

我尝试重写的代码的来源:link

编辑:

Python重写的代码不能正常工作(卡在循环中),所以我认为我误解了上面的语句。但正如你们几个人所说的那样,首先是正确的。那我一定是别的......

2 个答案:

答案 0 :(得分:7)

x = y[a=b];

a = b;
x = y[a];

是等价的。表达式a=b具有赋值后左操作数的值。

http://msdn.microsoft.com/en-us/library/474dd6e2.aspx

答案 1 :(得分:3)

我认为你实际上是对的,这意味着:

a = b;
x = y[a];
在将a = b分配给b后,

b本身会返回a。因此,y[a=b]将返回y[b],但也会将b分配到a

修改

在评论中你说,“如果a = 1且b = 3,那么它会解析为y [3],其中a = 3且b = 3”。

这正是上面的代码所做的:

一开始,a等于1b等于3

a = b;

现在a包含3b仍然包含3

x = y[a];

现在x已为y[3]分配了值,a仍然包含3b仍然包含3