C++逻辑运算符疑问:为何&&改||后输入范围限制代码生效?
为什么修改逻辑运算符会让你的输入范围限制代码失效?
嘿,这个逻辑运算符的坑很多C++新手都会踩,我来给你掰扯清楚~
核心问题:错误的逻辑与(&&)导致循环永远不执行
你原来的while循环条件是:
while (Xcoordinate<1 && Xcoordinate>10)
仔细想想,一个整数怎么可能同时小于1,又大于10呢?根本不存在这样的数!所以这个条件永远为假,循环直接跳过,自然没法对输入做范围检查——不管你输入什么数,程序都不会提示重新输入,这就是代码失效的原因。
改成逻辑或(||)后为什么正常?
当你把&&换成||,条件变成:
while (Xcoordinate<1 || Xcoordinate>10)
这就对了!这个条件的意思是:只要输入的数小于1,或者大于10,就进入循环提示用户重新输入。直到用户输入的数在1-10之间时,条件不成立,循环自动退出,完美实现了范围限制的功能。
顺便提一下你代码里的多余判断
你循环里的这个if判断其实是个“假条件”:
if (Xcoordinate >= 1 || Xcoordinate <=10) { break; }
任何整数都满足“大于等于1 或者 小于等于10”(比如0<=10,11>=1),所以不管输入什么,这个if都会触发break,导致循环最多执行一次就退出。其实这个判断完全没必要,删掉它之后,循环会靠while的条件自动控制退出时机,代码更简洁也更正确。
修正后的代码可以写成这样:
int main() { int Xcoordinate; cin >> Xcoordinate; while (Xcoordinate < 1 || Xcoordinate > 10) { cout << "must be in 1-10 range sorry" << endl; cout << "Try again" << endl; cout << "X: "; cin >> Xcoordinate; } }
内容的提问来源于stack exchange,提问作者Enoch Thomas
相关产品推荐
相关产品推荐

