私がいくつかの労働をしているときに私はこの線に出くわしました:
int home_address = current_pos_ = hash(key, size_);
そして、私はそれが実際に何をするのか疑問に思いましたか?(ハッシュ関数などではなく、「int変数=変数=値;」のことだけです)
私がいくつかの労働をしているときに私はこの線に出くわしました:
int home_address = current_pos_ = hash(key, size_);
そして、私はそれが実際に何をするのか疑問に思いましたか?(ハッシュ関数などではなく、「int変数=変数=値;」のことだけです)
その式は次のように読み取られます。
int home_address = (current_pos_ = hash(key,size_));
hash(key,size_)
intoの結果を割り当ててから、 intocurrent_pos_
の値を割り当てます。current_pos_
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;