Рейтинг:
7
Jochen Arndt
Видеть Приоритет оператора C++ - cppreference.com[^].
Затем разбейте выражение шаг за шагом в соответствии с приоритетом и замените фиксированные выражения (те, которые не содержат переменных). Часто бывает также полезно сначала вставить круглые скобки в соответствии с приоритетом.
Если у вас есть например
a || b && c
это будет
a || (b && c)
Поскольку ваш вопрос выглядит как домашнее задание, я не дам вам окончательного ответа. Даже если это не домашнее задание, вы должны сделать это сами, чтобы понять, как это работает.
Member 13525148
Это не домашнее задание. Мне дали ее как загадку, которую нужно разгадать. Спасибо за ваш совет. На самом деле я никогда раньше не занимался программированием на языке Си плюс плюс, да и вообще никаким программированием, если уж на то пошло.
Не могли бы вы объяснить мне, как ее решить?
Jochen Arndt
Вам не нужно знать C/C++, чтобы решить эту проблему, если вы знаете, что делают используемые операторы (логические OR и AND: TRUE/yes, если один из операндов истинен соответственно). TRUE, если оба операнда истинны, где TRUE означает, что операнд/результат не равен нулю) и в каком порядке они обрабатываются (предшествование).
Просто попробуйте мой совет сначала установить скобки, а затем упростить выражение, используя карандаш старого стиля и лист бумаги.
Затем вы можете заметить, что результат выражения зависит от значений используемых переменных, если первый член не равен нулю (кстати: вы изменили этот термин в теме после того, как я опубликовал свое решение: оператор ^ изначально отсутствовал).
Очевидный ответ на этот неопределенный вопрос таков:
Да, она может быть решена при условии, что переменные являются числовыми типами (могут использоваться для булевых выражений) или классами C++, имеющими неявный числовой тип возвращаемого значения.
Member 13525148
Спасибо, что в конце концов я все понял, и этот человек сказал, что у меня есть правильный ответ.
Member 13525148
Ответ не нулевой, правильный.