Каковы значения Integer логического False и True в VB6?

Я работаю с небольшим старым кодом VB6, который, таким образом,...

Dim STATUS As Integer

STATUS = -1

If (Not STATUS) Then
' do something
Else
' do something else
End If

поэтому я, естественно, задавался вопросом, какая ветвь этого кода выполнена. Так кто-нибудь знает, что числовые значения True и False находятся в VB6?

Ответ 1

True сохраняется как -1 и false как 0. Любое ненулевое значение считается истинным.

Чтобы понять, почему это так, пожалуйста, проверьте - http://www.vbforums.com/showthread.php?t=405047

Ответ 2

В VB 6 True имеет числовое значение -1. False имеет числовое значение 0.

Причина этого заключается в том, что тип данных Boolean хранится как 16-разрядное целое число со знаком. Следовательно, значение -1 оценивается до 16 1 в двоичном (1111111111111111). False составляет 16 0 с (0000000000000000). Это создает взаимосвязь, которая сохранялась в течение эволюции BASIC: True = Not False.

Ответ 3

На самом деле не ответ, а просто выкалывающий, я набрал это в ближайшее окно с этими результатами:

For x = -5 To 5 : ? x, CBool(x), ( x = True ), ( x = False ) : Next x
-5            True          False         False
-4            True          False         False
-3            True          False         False
-2            True          False         False
-1            True          True          False
 0            False         False         True
 1            True          False         False
 2            True          False         False
 3            True          False         False
 4            True          False         False
 5            True          False         False

(Я тестировал больше значений, но только -1 и 0 имели что-то "интересное". Остальные были все True/False/False.) Итак, эмпирически, я бы сказал, что сравнение выполняется арифметически, если вы бросаете с помощью CBool. Зачем? Я не могу сказать...