当我做一些实验时,我遇到了这条线:
int home_address = current_pos_ = hash(key, size_);
我想知道它到底是做什么的? (不是哈希函数或任何东西,只是“int variable = variable = value;”事物)
答案 0 :(得分:5)
该表达式读作:
int home_address = (current_pos_ = hash(key,size_));
它会将hash(key,size_)
的结果分配到current_pos_
,然后将current_pos_
的值分配到home_address
。
答案 1 :(得分:2)
赋值运算符求值为其左参数的最终值,因此此代码将hash(key, size_)
分配给current_pos_
,并使用新值home_address
初始化current_pos_
。
可以重载赋值运算符以返回任何类型的任何值,因此通常,此表达式的行为是调用current_pos_
的赋值运算符,结果为hash(key, size_)
(可能执行隐式转换),然后使用赋值运算符的返回值初始化home_address
(再次执行隐式转换)。
答案 2 :(得分:0)
int x = y = 0;
与
相同int x = 0;
y = 0;