我看了看调试器并且无法弄清楚IF语句为什么总是打印消息。
IF语句检查yesno!='Y'||(或)'N' 但不管我输入y或Y或n N还是H B它都会显示....我不知道再做什么动作了!我似乎无法找到它出错的地方?
if(yesno != 'Y' || 'N') { ...
谢谢你们。
答案 0 :(得分:8)
||
并不代表您认为的含义。正确的方法是:
if (yesno != 'Y' && yesno != 'N') { ...
这将独立评估&&
的每一面,如果两个边都为真,则结果为真。
请注意
if (yesno != 'Y' || yesno != 'N') { ...
总是是真的,因为任何给定的字符都是 而不是Y 或它不是N.这可能不是你想要的。
答案 1 :(得分:3)
if(yesno != 'Y' || 'N')
应该是:
if(yesno != 'Y' && yesno != 'N')
你链接的是不正确的。我相当肯定你知道你不应该这是一个错字,因为你在第&&
行没有正确使用44
。
答案 2 :(得分:2)
将条件yesno != 'Y' || 'N'
分开。它有两个条款:
yesno != 'Y'
。这可能是你想要的比较;它检查char yesno
是否不等于值'Y'
。'N'
。该子句仅评估值'N'
。作为一个布尔,'N'
,不是零,被认为是“真实的”。所以你有“(东西)||
(总是如此)”。这里的“东西”是yesno != 'Y'
而“永远是真的”是'N'
。结果永远是真的。
答案 3 :(得分:0)
你不能OR表达式(yesno!='Y')和声明(“N”)也是表达式。它只有两个或多个表达式可以使用||组合和&&获得所需的输出。
if(yesno!="Y"||"N")
实际上是
if(yesno!="Y" || TRUE)
总是如此:
Exp||TRUE=TRUE
无论表达如何。
use if(yesno!="Y"|| yesno!="N") // and in this case its && and not || i think
答案 4 :(得分:-1)
你需要把
if(yesno!='Y'|| yesno!='N')
你总是需要把完整的表达两次。