C++ 如果声明似乎没有检查其他&&;在声明中

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”,那么它甚至不会检查第二对条件,因为你用检查。相反的情况也是如此。如果一个是假的,另一个是真的。将其替换

我有一个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 = 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的第一部分为真。