Выражения (! B) и (b == false) эквивалентны в Java? - PullRequest
0 голосов
/ 27 октября 2011

Учитывая, что b является логической переменной, являются ли выражения (! B) и (b == false) одинаковыми?

Вот где я до сих пор с этим вопросом:

  • ! B - возвращает [ЛОЖНЫЙ ответ, если b истинно] или [ИСТИННЫЙ ответ, если b является ложным].

  • Объявление булевой переменной 'b' в этом случае установит ее Значение true, поэтому! b возвращает false.

Полагаю, все, что мне нужно для завершения вопроса, - это узнать, является ли b изначально истинным, что я и предполагаю?

Надеюсь, это имеет смысл, и кто-то может прояснить это для меня?

EDIT: Это вопрос от моего репетитора. Меня просят решить, верно ли это утверждение или нет: «Выражения (! B) и (b == false) равносильны, где b - логическая переменная»

Вот очень полезная загадочная подсказка, когда я попросил помощи:

Ситуация с! B заключается в том, что эти выражения должны обеспечивать одинаковый результат для всех значений b, чтобы оператор был правильным. Т.е. если b ложно, то оба выражения дают одинаковый результат, а если b верно, то оба выражения дают одинаковый результат. Вам нужно посмотреть на оба выражения.

Ответы [ 2 ]

5 голосов
/ 27 октября 2011

да, но для хорошего стиля нужно использовать !b вместо b == false

3 голосов
/ 27 октября 2011

Да, они эквивалентны в "нормальных" языках :-) (скажем, Java , C ++, C #)

В Javascript, если b может быть только true илиfalse, это правильно (но будьте осторожны! if (!null) верно, if (null == false) неверно. То же самое для undefined)

Имейте в виду, что не все языки используют ! для NOTи == для EQUALS.Например, в C вы, вероятно, будете использовать int вместо bool и FALSE вместо false, но результат будет таким же (но обратите внимание, что в C ненулевое значение равно "true")

...