我已经看过,看着调试器,似乎无法弄清楚为什么IF语句总是打印消息。如果陈述不正常?
IF语句检查是否yesno!='Y'||(或)'N' 但无论我输入y或Y还是n N或H B,它都会显示...。我不知道什么举动了!我似乎无法找到它出错的地方?
if(yesno != 'Y' || 'N') { ...
谢谢你们。
我已经看过,看着调试器,似乎无法弄清楚为什么IF语句总是打印消息。如果陈述不正常?
IF语句检查是否yesno!='Y'||(或)'N' 但无论我输入y或Y还是n N或H B,它都会显示...。我不知道什么举动了!我似乎无法找到它出错的地方?
if(yesno != 'Y' || 'N') { ...
谢谢你们。
||
并不完全代表您的想法。正确的做法是:
if (yesno != 'Y' && yesno != 'N') { ...
该独立评估&&
的两侧,如果都双方都真正的结果是真实的。
需要注意的是,因为任何给定的字符是要么
if (yesno != 'Y' || yesno != 'N') { ...
将总是是真的不Ÿ或它不是N.这可能不是你想要的。
但*为什么*不能按预期工作? +1指出重言式。我认为与D.M一起看起来更容易。 as:'!(yesno =='Y'&& yesno =='N')'。 – 2012-02-07 04:32:41
if(yesno!='Y'&& yesno!='N') 完美地工作....谢谢,我有一个脑屁...那是因为如前面所述,我在44行上正确使用它... 谢谢! – Daniel 2012-02-07 04:39:04
分开取条件yesno != 'Y' || 'N'
。它有两个条款:
yesno != 'Y'
。这可能是你想要的比较;它会检查char yesno
是否不等于值'Y'
。'N'
。本条仅对'N'
进行评估。作为一个布尔,'N'
,这不是零,被认为是“真实的”。所以你有“(stuff)||
(总是为真)”。这里“stuff”是yesno != 'Y'
,“always true”是'N'
。结果永远是真的。
你不能或者表达式(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
你需要把
如果(YESNO!= 'Y' || YESNO!= 'N')
你总是需要把充分表达的两倍。
但它总是评估为真,因为变量不能同时是Y和N. – 2012-02-07 21:31:37
pastebin链接似乎不工作。由于你的问题似乎围绕着一个单独的陈述,为什么不把这个包括在问题中。 – 2012-02-07 04:34:51