![]() |
Delphi-Version: 5
not 2=1 ist nicht not(2=1)
Hoi,
Code:
darauf falle ich doch sehr gern rein. Gerade wieder eine halbe Stunde versenkt. Was soll das eigentlich Syntaktisch sein? Wieso wird das unterschiedlich ausgewertet, bzw was wird hier eigentlich wie miteinander logisch verknüpft? Andere Sprachen würden hier eh einen Klammerfehler werfen.
if not 2=1 then //ist false
if not (2=1) then //ist true Daniel. |
AW: not 2=1 ist nicht not(2=1)
Das obere ist ein binäres not, das untere ein logisches. D.h. der obere Vergleich sieht so aus:
Code:
11111111111111111111111111111101 //= not 2 bei 32 Bit
00000000000000000000000000000001 //= 1 bei 32 Bit |
AW: not 2=1 ist nicht not(2=1)
Delphi-Quellcode:
entspricht
not 2=1
Delphi-Quellcode:
Zuerst wird also 2 bitweise negiert und das Ergebnis davon dann mit 1 verglichen.
(not 2)=1
|
AW: not 2=1 ist nicht not(2=1)
Hallo...
es wird von links nach rechts ausgewertet. Der erste Ausdruck anders geklammert (Wie ausgewertet wird) Dann ist es für dich logisch. :zwinker:
Delphi-Quellcode:
Edit: nur aus Prinzip zum 3. Mal weil zu langsam 8-) Wie die Geier alle :lol:
if (not 2) = (1) then
|
AW: not 2=1 ist nicht not(2=1)
Lach, thx.
Daher verlangen andere Sprachen bei Sowas eine Klammerung. Da muß man erstmal drauf kommen, not 2 ist ein binäres not... :-P |
AW: not 2=1 ist nicht not(2=1)
Und deswegen schreibt man nicht "not (2 = 1)" sondern "2 <> 1". Wofür gibt es denn sonst zu jeder Relation eine "Gegenrelation". Das muss ich meinen Kollegen auch immer wieder des öfteren einbläuen.
|
AW: not 2=1 ist nicht not(2=1)
Zitat:
Code:
-2+1 <> -(2+1)
|
AW: not 2=1 ist nicht not(2=1)
Man muß sich eigentlich nur mal merken, in welcher Reihenfolge Operatoren ausgewertet werden.
NOT ist nunmal höherrangiger, als alles Andere (abgesehn vom unären -) und wenn man da keine Klammern setzt, dann wird das immer zuerst ausgewertet. @jbg: *zustimm* |
AW: not 2=1 ist nicht not(2=1)
das ist schon klar.
das ist aber auch eine klare mathematische operation. in meinem fall waren es klare integer und keine binärdaten. Typ Integer. Daher....
Code:
geht tatsächlich auch als syntax.
if not 'a' = 1 then
|
AW: not 2=1 ist nicht not(2=1)
Zitat:
NOT und AND sind sowohl logische als auch -wie du es nennst- Integer-Operatoren. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:38 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz