我正在制作一个评估某物价值的程序。我有一个变量,它包含要添加的总值rcoverE
。当我为第二个问题测试“y”时,它可以正常工作,但是当我输入“n”时,无论如何它都会增加5。为什么会这样?
#include <iostream>
using namespace std;
int main(){
int year, yearE, rcoverE;
string rcover, func;
cout << "Enter the decade your thing was produced (eg. 20):";
cin >> year;
cout << "Does you typewriter have original thingy? (y,n):";
cin >> rcover;
rcoverE = 0;
if(rcover == "y" || "Y"){
rcoverE = rcoverE + 5;
}else{
rcoverE = rcoverE + 0;
}
cout << rcoverE;
yearE = 100 - year / 2;
}
答案 0 :(得分:3)
if(rcover == "y" || "Y"){
这种情况应该是错误的:
if(rcover == "y" || rcover == "Y"){
这:if(rcover == "y" || "Y"){
在逻辑上等同于if(rcover == "y" || "Y" != 0)
,而"Y" !=
0始终为真。
答案 1 :(得分:0)
if(rcover == "y" || "Y")
不会评估您的想法。这实际上评估好像(“rcover =='y')或if('Y')”,而不是“rcover ==('y'||'Y')。”在某些语言中,编译器不允许您这样做,但在C ++中,只需将语句“Y”返回true即可。您需要将语句更改为:
if(rcover == "y" || rcover == "Y")