为什么我不能得到正确的字符串。我在表达中有什么不对?我无法弄清楚。我已经存了好几个小时了。
#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
}
}
我理解或运营商使用||作为符号。那么为什么我的程序无法执行其任务
答案 0 :(得分:2)
您的计划结果是正确的。
由于var
设置为“y”,因此表达式
var != "n"
显然是真的。
因此,完整的表达
if ( .... || var != "n")
评估为true。根据定义,“任何或真实的”总是如此。
无论您希望执行else
语句多少,都不会。因为它不应该。
答案 1 :(得分:0)
您的程序没有任何问题(除了第14行的语法错误)。如果var
和constant
不相等,或 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
。