C语言中AND(&&)与OR(||)运算符的区别及代码判断逻辑问题
C语言逻辑与(&&)和逻辑或(||)的区别及问题解答
两个运算符的核心规则
- 逻辑与
&&:仅当左右两侧的判断条件同时成立时,整个表达式返回真,只要任意一侧条件不成立,整体就返回假。 - 逻辑或
||:只要左右两侧的判断条件有任意一个成立,整个表达式就返回真,只有两侧条件都不成立时,整体才返回假。
问题原因
你代码里的字符变量ch同一时间只能存储一个输入字符,不可能同时等于小写'y'和大写'Y',因此if(ch=='y' && ch=='Y')的判断条件永远不成立,对应的代码块永远不会执行,看起来就是“不生效”。
两个正常写法的逻辑说明
if(ch=='y' || ch=='Y'):只要用户输入小写y或者大写Y任意一个,条件就成立,正好匹配你判断“用户是否要终止循环”的需求,逻辑正常。if(ch!='y' && ch!='Y'):该条件等价于“用户输入既不是小写y也不是大写Y”,是上述判断的反向逻辑,符合逻辑运算的德摩根定律:!(A || B)等价于!A && !B,因此逻辑也能正常运行。
内容的提问来源于stack exchange,提问作者senise
相关产品推荐
相关产品推荐

