Как мне решить эту проблему с логическим оператором? - PullRequest
0 голосов
/ 04 марта 2019

Мой профессор дал нам лист логического оператора из моих классов C ++, и я был озадачен этой проблемой.Если x = -2, y = 5, z = 0 и t = -4, каково значение каждого из следующих логических выражений?

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

Я застреваю на этом шаге после подключениявсе в. 3 <8 && 5 </p>

Я знаю, что слева 3 * 5 = 15 и 15/4 = 3. Теперь на другой стороне я застрял.Я знаю, что 5 - правда, так как оно больше или равно 4. Но я не знаю, что делать со следующим, когда его 8 && 5. Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 04 марта 2019

Похоже, это упражнение в приоритете оператора.Когда приоритет учтен, оператор 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, а все выражение оценивается как true.

0 голосов
/ 04 марта 2019

Вы можете поместить круглые скобки вокруг различных подвыражений в своем выражении, следуя порядку старшинства операторов и их ассоциативности .

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

равно

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

is

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

is

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

is

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

Это должно дать вам четкое руководство относительно того, что выражение должно оценивать.

...