Ich habe gerade herausgefunden, dass vim offensichtlich die Division durch Null erlaubt:
:let a=42/0
:echo a
druckt 2147483647
(das ist der Wert von a
).
Ist dies irgendwo dokumentiert und warum erlaubt vim die Division durch Null?
vimscript
arithmetic
René Nyffenegger
quelle
quelle
:echo 42/0.0
, ein anderes Ergebnis zu sehen :)Antworten:
Dieses Verhalten ist im Abschnitt eval dokumentiert :
quelle
Hier ist warum:
Und wie repräsentiert Vim die größte verfügbare Anzahl?
Sehen
:h limits
Darüber hinaus heißt es in der
float2nr
Funktionsdokumentation:Sie haben also hier Ihre 2 Nummern:
+ 2147483647
und- 2147483647
.Die letzte Zahl
-2147483648
wird zur Darstellung desNaN
Wertes verwendet.Dies wird durch den
eval
Abschnitt darauf bestätigt (mea culpa: @cuonglm hat es direkt vor mir gepostet ):Wie @VanLaser feststellte, funktioniert dies nur für Ganzzahlen, für Gleitkommazahlen haben Sie mehr Konsistenz:
quelle
Dieses Verhalten ist in Calculus nützlich, wenn Sie ein Limit verwenden.
Lim n -> 0 ^ + von 1 / n = + inf
Dies kann auch geschrieben werden als: As n -> 0 ^ +, 1 / n -> + inf
Es wird so gelesen. Wenn n von rechts gegen Null geht, nähert sich die Funktion 1 / n der positiven Unendlichkeit.
Um eine visuelle Erklärung für diese Argumentation zu erhalten, rufen Sie http://www.wolframalpha.com/input/?i=limit+n-%3E0+of+1%2Fn auf
Was speziell Vim-Script betrifft, machen AFAIK nicht viele Leute viel mehr als Logik und Ganzzahlarithmetik damit. Es könnte der Fall sein, dass dieses Verhalten zu dieser Zeit als gute Idee erschien und zu diesem Zeitpunkt lediglich ein altes Artefakt ist.
quelle