W VB6 przekształcenie True
w liczbę całkowitą daje wartość -1.Dlaczego -1 jest wynikiem przymusu True do liczby całkowitej w VB6?
Dlaczego tak się dzieje? Jaki jest tego powód?
W większości innych języków programowania (C/C++, Java, Perl, Python itd.), Wartość true zmienia się na 1, gdy jest wymuszona na liczbę całkowitą. W algebrze boolowskiej wartość 1 jest używana do reprezentowania wartości true/on. Dlaczego VB6 robi to inaczej?
Widzę pewną elegancką symetrię polegającą na tym, że bitowe-nie z -1 (prawda) przyniesie 0 (fałsz), i na odwrót (ponieważ -1 reprezentuje wszystkie 1 w two's complement), ale Nie mogę wymyślić żadnych praktycznych korzyści z tej tożsamości.
Ja tylko pytam z ciekawości, przy okazji - to było coś, co wydało mi się dziwne, kiedy po raz pierwszy poznałem VB6 i od tego czasu się zastanawiam.
Wiem :) Nie lubię VB;) – Onkelborg
Interesujące! Dzięki za link. Wiedziałem, że operatory logiczne nie uległy zwarciu i działały bitowo dla liczb całkowitych, ale nie zdawałem sobie sprawy, że są one tylko jednokrotne, nawet dla wartości typu Boolean. I @Okkelborg, ja też nie lubię VB, byłem po prostu ciekawy co do tej anomalii ;-) – Cameron
Dobra :) Nadzieja Thera dla ludzkości :) – Onkelborg