这跟bool逻辑没关系而是你不了解scanf。scanf的返回值不是被输入参数(实际上也不可能做到这一点)而是成功赋值参数的个数。你很有探究精神发现输入字母会退出,这是因为输叺字母导致匹配%d失败返回0导致的反之,不论你输入的是0还是1还是2都属于赋值成功,所以返回1
那为什么第一种不论输什么数字都在循环裏而第二种输入非1的数字就能跳出循环,这两种不应该本质上是一样的吗
仔细读我的回答,您会发现本质差很多我的回答对于您的這个问题来说已经足够到位了,当然如果您对我的回答的理解有问题的话请务必留言。不一定能马上解答但是一定会回答的。