我在做一些实验时遇到了这条线:
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_addresscurrent_pos_
赋值运算符可以被重载以返回任何类型的任何值,所以一般来说,这个表达式的行为是调用赋值运算符current_pos_的结果hash(key, size_)(可能执行隐式转换),然后 home_address用返回值初始化赋值运算符(同样可能执行隐式转换)。
int x = y = 0;
是相同的
int x = 0;
y = 0;