このスニペットに遭遇した場所で、ユニオン検索の問題の実装に取り組んでいました。
while (root != id[root])
root = id[root];
と同じじゃないですか
while ((root = id[root]) != id[root]);
ただし、初期条件が false の場合、2 番目のコンストラクトは代入操作を少なくとも 1 回実行する可能性がありますが、最初のコンストラクトは 1 回も実行しない可能性があります。他に違いはありますか?