为什么我的或操作员不工作?

时间:2016-08-19 02:24:44

标签: c++ c++11 operators

为什么我不能得到正确的字符串。我在表达中有什么不对?我无法弄清楚。我已经存了好几个小时了。

#include <iostream>
#include <stdlib.h>
#include <stdio.h>
#include <string>
using namespace std;

int main (){
string var = "y";
string constant ="y";

if ((var != constant )||( var != "n")){
cout << "error";
}
else {
cout << "right" // this is what it should print
}
}

我理解或运营商使用||作为符号。那么为什么我的程序无法执行其任务

2 个答案:

答案 0 :(得分:2)

您的计划结果是正确的。

由于var设置为“y”,因此表达式

var != "n"

显然是真的。

因此,完整的表达

if ( .... || var != "n")

评估为true。根据定义,“任何或真实的”总是如此。

无论您希望执行else语句多少,都不会。因为它不应该。

答案 1 :(得分:0)

您的程序没有任何问题(除了第14行的语法错误)。如果varconstant不相等, var不等于'n',则进行测试。 or语句工作正常,因为你基本上都是这样说:if (condition or true),它总是正确的,因为如果他或者运算符只找到一个条件为true,它将返回true。

我相信你想要的是和&&运算符。如果两个条件都为真,它只返回true。

如上所述,即使使用&&运算符,您仍然需要更改代码。你的错误\ bug没有任何意义。你告诉你的程序:

#pseudo code

if(false and false)
    print error
else
    print ...

您的程序只是遵守您设置的规则。 if语句上方的else语句将永远不会,因为if语句将始终评估为true