if statement not working right?
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.
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
.
Take the conditional yesno != 'Y' || 'N'
apart. It has two clauses:
-
yesno != 'Y'
. This is probably a comparison you intended; it checks to see if the charyesno
is inequal to the value'Y'
. -
'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.