如何解决如果语句似乎不检查语句中的其他&&
| 我有一个if语句,如下所示:int count=0;
string Check;
if ((count==4 && Check!=\"-s\")||(count==4 && Check!=\"-S\"))
如果count
等于4,而Check
等于\"-s\"
或\"-S\"
,则由于count == 4
仍会输入此if
语句。它似乎完全忽略了第二部分。我做错了什么吗?
解决方法
好吧,如果
Check
是ѭ4then,那么它甚至不会检查第二对条件,因为您以||
进行了检查。相反的情况也是如此。如果一个为假,则另一个为真。用“ 10”代替。
int count = 4;
string Check = \"-S\";
if( (count == 4 && // count is 4,alright.
Check != \"-s\") || // Check is \"-S\",alright I\'m done thanks to || (OR)
(count == 4 &&
Check != \"-S\") )
{
// ...
}
int count = 4;
string Check = \"-s\";
if( (count == 4 && // count is 4,time to check the other condition pair...
(count == 4 && // count is 4,alright.
Check != \"-S\") ) // Check is \"-s\",which is different from \"-S\",perfect.
{
// ...
}
现在是更正的版本:
int count = 4;
string Check = \"-S\";
if( (count == 4 && // count is 4,alright.
Check != \"-s\") && // Check is \"-S\",different from \"-s\",now on to the other condition!
(count == 4 && // count is 4,alright.
Check != \"-S\") ) // Check is \"-S\"... oh dang! No executed code for you.
{
// ...
}
, Check!=\"-s\"
或Check!=\"-S\"
总是这样。因此,您的if语句等效于if (count==4)
。
, 如果是count == 4
和Check == \"-s\"
,则||
右边的表达式为true。如果是count == 4
和Check == \"-S\"
,则||
左侧的表达式为true。所以你有对或对。因此,您的if块将被执行。
, 正确的声明是:
if(count==4 && (Check != \"-s\" || Check!=\"-S\"))
如果count = 4且Check = \“-S \”,则您编写的语句为true,因为OR的第一部分为true。
, 使用起来可能会更清楚:
if (count==4 && Check!=\"-s\" && Check!=\"-S\")
, 您应该使用!strcmp(Check,\“-s \”)和!strcmp(Check,\“-S \”)代替!=。
如果使用==,则比较指针,这不是您想要的。指针将始终不同,因此您的第二个参数将始终为true。
, 您希望仅当-s或-S中的Check为!=且count为= 4时才输入if主体吗?
if ( (Check!=\"-s\" && Check!=\"-S\") && count==4 )
应该管用。
要么
if ( Check.tolower() !=\"-s\" && count==4 )
应该管用。
(不记得要小写字符串的函数名称,必须先查找一下)
希望对您有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。