因为flag会每次左移一位判断n的次低位是不是1,而此时的n不一定为1,你可以将(n&flag)==1换成(n&flag) != 0,这样应该就满足你的本意了。大佬轻喷