C++ 如果声明似乎没有检查其他&&;在声明中
我有一个if语句,如下所示:C++ 如果声明似乎没有检查其他&&;在声明中,c++,if-statement,C++,If Statement,我有一个if语句,如下所示: int count=0; string Check; if ((count==4 && Check!="-s")||(count==4 && Check!="-S")) 如果count等于4且检查等于“-s”或“-s”由于count==4,它仍然进入该If语句。它似乎完全忽略了第二部分。有什么我做错了吗?好吧,如果检查是“-S”,那么它甚至不会检查第二对条件,因为你用检查。相反的情况也是如此。如果一个是假的,另一个是真的。将其替换
int count=0;
string Check;
if ((count==4 && Check!="-s")||(count==4 && Check!="-S"))
如果
count
等于4且检查等于“-s”
或“-s”
由于count==4,它仍然进入该If
语句。它似乎完全忽略了第二部分。有什么我做错了吗?好吧,如果检查是“-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.
{
// ...
}
如果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.
{
// ...
}
如果count==4
和Check==“-s”
,则|
右侧的表达式为真。如果count==4
和Check==“-S”
,则|
左侧的表达式为真。所以你有真或真,这是真的。因此,将执行if块。如果count==4
和Check==“-s”
,则|
右侧的表达式为真。如果count==4
和Check==“-S”
,则|
左侧的表达式为真。所以你有真或真,这是真的。因此,您的if块将被执行。始终是检查=“-s”
或检查=“-S”
。因此,您的if语句相当于if(count==4)
始终是检查=“-s”
或检查=“-S”
。因此,if语句相当于if(count==4)
正确的语句是:
if(count==4 && (Check != "-s" || Check!="-S"))
如果count=4且Check=“-S”,则您编写的语句为true,因为OR的第一部分为true。正确的语句为:
if(count==4 && (Check != "-s" || Check!="-S"))
如果count=4且Check=“-S”,则您编写的语句为true,因为OR的第一部分为true。您应该使用!strcmp(勾选“-s”)和!strcmp(选中“-S”)而不是!=
如果您使用==比较指针,那么这不是您想要的。指针总是不同的,因此您的第二个参数总是正确的。您应该使用!strcmp(勾选“-s”)和!strcmp(选中“-S”)而不是!=
如果您使用==比较指针,那么这不是您想要的。指针总是不同的,因此您的第二个参数将始终为真。当且仅当Check is!=从-s或-s开始,计数=4,对吗
if ( (Check!="-s" && Check!="-S") && count==4 )
应该有用
或
应该有用
(不要记住要将字符串小写的函数名,您必须查找它)
希望这有帮助 当且仅当Check is!=从-s或-s开始,计数=4,对吗
if ( (Check!="-s" && Check!="-S") && count==4 )
应该有用
或
应该有用
(不要记住要将字符串小写的函数名,您必须查找它)
希望这有帮助 可能更清楚地使用:
if (count==4 && Check!="-s" && Check!="-S")
可能更清楚地使用:
if (count==4 && Check!="-s" && Check!="-S")
对于C++中的比较字符串,必须使用<代码> COMPARE()/Case> Funcon,例如:“JoalLead”:C++<代码> STD::String 类重载<代码>=< /代码>运算符,使它“神奇地”在这种情况下工作。“如果计数等于4,检查等于-s或-s”。这是你应该写的IF-STATEST。对于C++中的比较字符串,必须使用<代码> COMPRACE()/代码> FuncIon:“JON LLED:C++<代码> STD::String 类重载<代码>=< /代码>运算符,使它“神奇地”在这种情况下工作。-你的问题有答案:“如果计数等于4,检查等于-s或-s“这是你应该写的IF-STATEMENT.UH,那是如果你在处理char *,而不是使用类型<代码>字符串这是C++中的一个部分,它有操作符= = OrdLoad Duh,如果你在处理char *,不是类型<代码>字符串,它是C++中的一部分,它具有操作符== OrdLoad,这也失败了,因为OR的第一部分是真的。OR的至少一部分总是正确的。我的意思是这将导致OR的第一部分为真。这也会失败,因为OR的第一部分为真。至少OR的一部分始终为真。因为@vrxacs在他的示例中使用了Check=“-S”,我的意思是这将导致OR的第一部分为真。