The condition (c != 'o' || c != 'x')
can never be false. If c
is 'o'
, then c != 'x'
will be true and the OR condition is satisfied. If c
is 'x'
, then c != 'o'
will be true and the OR condition is satisfied.
You want &&
(AND), not ||
(OR):
while (c != 'o' && c != 'x') {
// ...
}
"While c
is NOT 'o'
AND c
is NOT `'x'..." (e.g., it's neither of them).
Or use De Morgan's law, covered here:
while (!(c == 'o' || c == 'x')) {
// ...
}
"While it's NOT true that (c
is 'o'
or c
is 'x'
)..."
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…