如果声明不正常?

时间:2012-02-07 04:26:55

标签: c++ if-statement

我看了看调试器并且无法弄清楚IF语句为什么总是打印消息。

IF语句检查yesno!='Y'||(或)'N' 但不管我输入y或Y或n N还是H B它都会显示....我不知道再做什么动作了!我似乎无法找到它出错的地方?

if(yesno != 'Y' || 'N') { ...

谢谢你们。

5 个答案:

答案 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'分开。它有两个条款:

  1. yesno != 'Y'。这可能是你想要的比较;它检查char yesno是否不等于值'Y'
  2. 'N'。该子句仅评估值'N'。作为一个布尔,'N',不是零,被认为是“真实的”。
  3. 所以你有“(东西)||(总是如此)”。这里的“东西”是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')

你总是需要把完整的表达两次。