3

我在做一些实验时遇到了这条线:

 int home_address = current_pos_ = hash(key, size_);

我想知道它实际上是做什么的?(不是散列函数或任何东西,只是“int variable = variable = value;”的东西)

4

3 回答 3

5

该表达式读作:

int home_address = (current_pos_ = hash(key,size_));

它分配hash(key,size_)into的结果,current_pos_然后分配current_pos_into的值home_address

于 2012-10-18T12:52:28.803 回答
2

赋值运算符计算其左参数的最终值,因此此代码分配hash(key, size_)给,并使用 的新值进行current_pos_初始化。home_addresscurrent_pos_

赋值运算符可以被重载以返回任何类型的任何值,所以一般来说,这个表达式的行为是调用赋值运算符current_pos_的结果hash(key, size_)(可能执行隐式转换),然后 home_address用返回值初始化赋值运算符(同样可能执行隐式转换)。

于 2012-10-18T12:52:28.840 回答
0
int x = y = 0;

是相同的

int x = 0;
y = 0;
于 2012-10-18T12:51:44.013 回答