Vergleich von Ganzzahlen, die Verwendung von "Und" in If-Anweisungen
Dies klingt vielleicht dumm aber ich bin stecken geblieben und ich habe kein Glück auf der Suche im internet würde was verursacht dies geschehen kann. Ich habe eine Methode, die ich überprüfen möchten, um sicherzustellen, dass beide ganze zahlen eingegeben sind beide positiv:
Public Function BothPositive(ByVal num1 As Integer, ByVal num2 As Integer) As Boolean
If (num1 And num2) > 0 Then
Return True
Else
Return False
End If
End Function
Nun, wenn ich geben Sie einige zahlen in
- BothPositive(1,1) = True
- BothPositive(1,2) = False
- BothPositive(-10, 10) = True
Warum ist das so? Was ist Los mit der Reihenfolge der Operationen im Vergleich-Anweisung oder was ist das "Und" vergleichen zu wollen? Ich verstehe nicht, warum das nicht funktionieren würde.
EDIT: ich verstehe, wie das zu umgehen, aber meine Frage ist warum ist dieser Auftritt? Ich will wissen, was Los ist, dass ist die Ursache.
- Es ist schon eine lange Zeit, da habe ich etwas gemacht, das in VB ist, aber es scheint, wie die UND nicht das zurück, was Sie es erwarten. Warum nicht einfach tun
If (num1 > 0) And (num2 > 0) Then
?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Vb.Net
And
repräsentiert einen bitweisen operator also, was Sie hier tun, schafft einen Wert, der die bitweiseAND
vonnum1
undnum2
und vergleichen Sie diesen Wert auf 0. Was Sie wollen, zu tun ist, vergleichen Sie jeden Wert einzeln gegen 0. versuchen Sie die folgendenBeachten Sie die Verwendung von
AndAlso
hier statt plain oldAnd
. DieAndAlso
ist ein boolescher operator vs. ein bitweise und ist auch ein Kurzschluss. Sie sollte fast immer bevorzuge es überAnd
Und ist eine Boolesche operation, und funktioniert nicht auf Ganzzahlen die Weise, die Sie erwarten (es ist eine bitweise oder-Verknüpfung). Sie haben, dies zu schreiben, als
If num1 >0 And num2 > 0 Then
...