如何解决此逻辑运算符问题?

时间:2019-03-04 19:28:13

标签: c++ math logic logical-operators

我的教授从我的C ++团队给了我们一个逻辑运算符工作表,我为此而感到困惑。 如果x = -2,y = 5,z = 0,t = -4,那么以下每个逻辑表达式的值是多少?

3 * y / 4 < 8 && y >= 4

插入所有内容后,我会陷入这一步骤。 3 <8 && 5

我知道在左边3 * 5 = 15和15/4 =3。现在另一边是我被卡住的地方。我知道5是正确的,因为它大于或等于4。但是当8 && 5时,我不知道下一步该怎么做。

2 个答案:

答案 0 :(得分:3)

通过遵循the order of precedence of operators and their associativity,您可以在表达式的各个子表达式周围加上括号。

3 * y / 4 < 8 && y >= 4

(3 * y) / 4 < 8 && y >= 4

((3 * y) / 4) < 8 && y >= 4

(((3 * y) / 4) < 8) && y >= 4

(((3 * y) / 4) < 8) && (y >= 4)

这应该为您提供一个明确的表达式准则。

答案 1 :(得分:2)

这似乎是运算符优先级的一种练习。考虑优先级后,语句3 * y / 4 < 8 && y >= 4

等效
(((3 * y) / 4) < 8) && (y >= 4)

我们用变量代替

(((3 * 5) / 4) < 8 && (5 >= 4)

完成数学运算后,我们得出结论

(3 < 8) && (5 >= 4)

3的确小于8,而5的确大于或等于4,因此布尔值and的两面均为真,整个表达式的求值为true。