所以我正在学习C ++而我正在做一个实验室,但我似乎无法弄清楚出了什么问题。所以实验室是: 我们需要一个数字:大于或等于零且小于10 - 或 - 其值乘以2小于20且其减少2的值大于负2 - 或 - 其减少1的值更大超过一,它的值除以2小于十 - 或 - 它等于11.写条件是C ++语言接受的表达形式,并将其结果分配给答案变量。我遇到的问题是无论输入什么,我的输出总是正确的。
bool answer;
int value;
cout << "Enter a value: ";
cin >> value;
if ((10 > value > -1) || ((20 > (value * 2)) && ((value - 2) > -2)) || (((value - 1) > 1) && ((value / 2) < 10)) || (value == 11))
{
answer = true;
}
else {
answer = false;
}
cout << (answer ? "THAT'S TRUE :)" : "THAT'S NOT TRUE :(") << endl;
return 0;
答案 0 :(得分:1)
运营商>
从左到右分组,以便将10 > value > -1
解析为(10 > value) > -1
;表达式(10 > value)
提供true
或false
,并且true > -1
和false > -1
选项将始终评估为true
。因此,您的复杂条件(10 > value > -1) || ....
将始终提供true
(快捷方式评估)。
改为写(10 > value && value > -1)
。