在初始化中加倍'='

时间:2012-10-18 12:50:39

标签: c++ initialization variable-assignment

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

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

我想知道它到底是做什么的? (不是哈希函数或任何东西,只是“int variable = variable = value;”事物)

3 个答案:

答案 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;