逻辑数据:运算符和表达式

时间:2017-07-12 21:55:19

标签: c++

所以我正在学习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;

1 个答案:

答案 0 :(得分:1)

运营商>从左到右分组,以便将10 > value > -1解析为(10 > value) > -1;表达式(10 > value)提供truefalse,并且true > -1false > -1选项将始终评估为true。因此,您的复杂条件(10 > value > -1) || ....将始终提供true(快捷方式评估)。

改为写(10 > value && value > -1)

相关问题