我有一个if语句,如下所示:
int count=0;
string Check;
if ((count==4 && Check!="-s")||(count==4 && Check!="-S"))
如果count
等于4且Check
等于"-s"
或"-S"
,则由于if
,它仍会输入此count == 4
语句。它完全似乎忽略了第二部分。有什么我做错了吗?
答案 0 :(得分:4)
Check!="-s"
或Check!="-S"
总是如此。因此,您的if语句等同于if (count==4)
。
答案 1 :(得分:2)
好吧,如果Check
是"-S"
,那么它甚至不会检查第二对条件,因为您使用||
进行检查。对于相反的情况也是如此。如果一个是假的,另一个是真的。将其替换为&&
。
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, alright.
Check != "-s") || // Check is "-S", 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.
{
// ...
}
答案 2 :(得分:2)
如果count == 4
和Check == "-s"
,则||
右侧的表达式为真。如果count == 4
和Check == "-S"
,则||
左侧的表达式为真。所以你有真实或真实,这是真的。因此,执行了if-block。
答案 3 :(得分:2)
正确的陈述是:
if(count==4 && (Check != "-s" || Check!="-S"))
如果你有count = 4和Check =“ - S”,你写的语句是真的,因为那时OR的第一部分是真的。
答案 4 :(得分:2)
可能更清楚使用:
if (count==4 && Check!="-s" && Check!="-S")
答案 5 :(得分:1)
你应该使用!strcmp(Check,“ - s”)和!strcmp(Check,“ - S”)代替!=。
如果你使用==你比较指针,这不是你想要的。指针将始终不同,因此您的第二个参数将始终为真。
答案 6 :(得分:1)
当且仅当Check是!=来自-s或-S并且count is = 4时,你想输入if主体吗?
if ( (Check!="-s" && Check!="-S") && count==4 )
应该有用。
或
if ( Check.tolower() !="-s" && count==4 )
应该有用。
(不记得小写字符串的函数名称,你必须查找它)
希望这有帮助。