我在做一些实验时遇到了这条线:
int home_address = current_pos_ = hash(key, size_);
我想知道它实际上是做什么的?(不是散列函数或任何东西,只是“int variable = variable = value;”的东西)
我在做一些实验时遇到了这条线:
int home_address = current_pos_ = hash(key, size_);
我想知道它实际上是做什么的?(不是散列函数或任何东西,只是“int variable = variable = value;”的东西)
该表达式读作:
int home_address = (current_pos_ = hash(key,size_));
它分配hash(key,size_)
into的结果,current_pos_
然后分配current_pos_
into的值home_address
。
赋值运算符计算其左参数的最终值,因此此代码分配hash(key, size_)
给,并使用 的新值进行current_pos_
初始化。home_address
current_pos_
赋值运算符可以被重载以返回任何类型的任何值,所以一般来说,这个表达式的行为是调用赋值运算符current_pos_
的结果hash(key, size_)
(可能执行隐式转换),然后 home_address
用返回值初始化赋值运算符(同样可能执行隐式转换)。
int x = y = 0;
是相同的
int x = 0;
y = 0;