我遇到布尔和逻辑运算符的问题。我试图让wantsToppings
评估为true
,如果配对等于'T'
或't'
,但此代码的评估结果为true
,无论用户输入如何。我不确定我错过了什么,但我知道我得错过一些东西。
感谢您的帮助。
cout << "Toppings wanted (T for toppings/N for no toppings)? ";
cin >> toppings;
if (toppings == 't' || 'T'){
wantsToppings = true;
} else {
wantsToppings = false;
}
答案 0 :(得分:3)
您缺少逻辑运算符的工作方式。这是你做的:
if (toppings =='t' || 'T')
以及它是如何完成的:
if (toppings =='t' || toppings == 'T')
你也不需要if
的复杂性,它可能只是:
wantsToppings = (toppings == 't' || toppings == 'T');
答案 1 :(得分:1)
表达式
if (toppings == 't' || 'T')
并不意味着toppings
是't'
或'T'
,而是基本上(一旦你考虑了延迟评估,它实际上比这更复杂):< / p>
toppings == 't'
和表达式'T'
)||
)现在'T'
是char
,它被提升为布尔值true
,因此结果始终为真。
正如其他人所指出的,你正在寻找的表达是
if (toppings == 't' || toppings == 'T')