En VB6, forzar True
a un número entero produce el valor -1.¿Por qué -1 es el resultado de forzar True a un entero en VB6?
¿Por qué es esto así? ¿Cuál es el razonamiento detrás de esto?
En la mayoría de los otros lenguajes de programación (C/C++, Java, Perl, Python, etc.), true se convierte en 1 cuando se fuerza en un entero. En álgebra booleana, el valor 1 se usa para representar verdadero/encendido. ¿Por qué VB6 lo hace de manera diferente?
Veo una cierta simetría elegante en el hecho de que un bitwise-not de -1 (True) arrojará 0 (False), y viceversa (porque -1 representa todos los 1s en two's complement), pero No puedo pensar en ningún beneficio práctico de esta identidad.
Por cierto, solo estoy preguntando por curiosidad: esto fue algo que me llamó la atención cuando aprendí VB6 por primera vez, y me lo he estado preguntando desde entonces.
Sé :) No me gusta VB;) – Onkelborg
¡Interesante! Gracias por el enlace. Sabía que los operadores lógicos no se cortocircuitaron y trabajaron bit a bit para enteros, pero no me di cuenta de que eran _sólo_ en bits, incluso para valores booleanos. Y @Onkelborg, tampoco me gusta VB, tenía curiosidad por esta anomalía ;-) – Cameron
Bueno :) Es la esperanza para la humanidad :) – Onkelborg