Что это за код? - PullRequest
       17

Что это за код?

2 голосов
/ 24 февраля 2011
gnSaveOnExit = If(gnSaveOnExit = 0, 1, 0)

Что это говорит?Что, если gnSaveOnexit равен 0, утверждение истинно, иначе это ложь?или gnSaveOnExit изменится с 0 на 1, а с других значений на 0?

Ответы [ 4 ]

3 голосов
/ 24 февраля 2011

Это выглядит как встроенный оператор if, который перевернет значение gnSaveOnExit между 0 и 1.

Если единственными допустимыми значениями являются 0 и 1, это можно преобразовать в логическое значение. Тогда заявление будет просто:

bnSaveOnExit = Not bnSaveOnExit

... хотя это и не имеет никакого смысла без какого-либо контекста.

2 голосов
/ 24 февраля 2011

Это короткая рука для:

If gnSaveOnExit = 0 Then
    gnSaveOnExit = 1
else
    gnSaveOnExit = 0
end If

Другими словами: если gnSaveOnExit = 0, установите значение 1. Если что-то еще, установите его на 0

0 голосов
/ 24 февраля 2011

Первый "должен быть IIF нет, если

Должен читать IIF (gnSaveOnExit = 0, 1, 0)

Если gnsaveonexit = 0, то 1 еще 0

Когда визуальныйBasic преобразует числовые значения типов данных в логические, 0 становится ложным, а все остальные значения становятся истинными. Когда Visual Basic преобразует логические значения в числовые типы, ложное становится 0, а истинное становится -1.

0 голосов
/ 24 февраля 2011

Его ненулевые значения переключаются на ноль, а нулевые значения на 1. Предположительно, gnSaveOnExit в любом случае будет только 1 или 0. Я не уверен, почему логическое значение не использовалось.

Эквивалент (просто для удовольствия!) Будет

   gnSaveOnExit = -1 * (gnSaveOnExit - 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...