if statement not working right?

前端 未结 5 1648
执念已碎
执念已碎 2020-12-02 03:19

I\'ve looked and looked with the debugger and cannot seem to figure out why the IF statement always prints the message.

The IF statement checks to see if yesno != \'

相关标签:
5条回答
  • 2020-12-02 03:32

    you cannot OR an expression (yesno!='Y') and a statement ("N") which is also an expression. its only two or more expressions that can be combined using || and && to get the required output.

    if(yesno!="Y"||"N")
    

    is actually

    if(yesno!="Y" || TRUE)
    

    which is always true because:

    Exp||TRUE=TRUE 
    

    regardless of the expression.

    use if(yesno!="Y"|| yesno!="N")      // and in this case its && and not || i think
    
    0 讨论(0)
  • 2020-12-02 03:45

    Take the conditional yesno != 'Y' || 'N' apart. It has two clauses:

    1. yesno != 'Y'. This is probably a comparison you intended; it checks to see if the char yesno is inequal to the value 'Y'.
    2. 'N'. This clause evaluates simply to the value 'N'. As a bool, 'N', which is not zero, is considered "true."

    So you have "(stuff) || (always true)". Here "stuff" is yesno != 'Y' and "always true" is 'N'. The result will always be true.

    0 讨论(0)
  • 2020-12-02 03:45

    You need to put

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

    You always need to put the full expression twice.

    0 讨论(0)
  • 2020-12-02 03:53

    The || doesn't quite mean what you think it means. The correct approach is:

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

    This evaluates each side of the && independently, and the result is true if both sides are true.

    Note that

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

    will always be true because any given character is either not Y or it is not N. This is probably not what you want.

    0 讨论(0)
  • 2020-12-02 03:58
    if(yesno != 'Y' || 'N')
    

    should be:

    if(yesno != 'Y' && yesno != 'N')
    

    You are chaining them which is incorrect. I am fairly sure you know that you should not and that is a typo, because you used && correctly on line no 44.

    0 讨论(0)
提交回复
热议问题