!i%2这个语句里面,!的优先级高于%,所以这个语句等于(!i)%2。因为i的循环里面没有0,所以每一次if语句都为0,执行到else去了。else分支执行的是continue,让for循环直接进行下一次。所以这个for循环其实是被!i%2这个语句玩废了,什么都没做。最后跳出for循环才有一次打印输出,输出为#。
你把(!i%2)打印出来看,自己就清楚了