int Find(int x) { // if (fa[x] == x) { // return x; // } // fa[x] = Find(fa[x]); // return fa[x]; return fa[x] == x ? x : fa[x] = Find(fa[x]); }
在上述代码中,当 xxx 是负数时,用被注掉的代码就会报错,但是用三元运算符,fa[x]fa[x]fa[x] 就会返回0并且正常运行,这是什么原理???