AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

not 2=1 ist nicht not(2=1)

Ein Thema von DSCHUCH · begonnen am 6. Okt 2012 · letzter Beitrag vom 7. Okt 2012
Antwort Antwort
Seite 1 von 2  1 2      
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#1

not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 19:00
Delphi-Version: 5
Hoi,

Code:
if not 2=1 then //ist false


if not (2=1) then //ist true
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.

Daniel.
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#2

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 19:04
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
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von implementation
implementation

Registriert seit: 5. Mai 2008
940 Beiträge
 
FreePascal / Lazarus
 
#3

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 19:05
not 2=1 entspricht (not 2)=1 Zuerst wird also 2 bitweise negiert und das Ergebnis davon dann mit 1 verglichen.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#4

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 19:06
Hallo...

es wird von links nach rechts ausgewertet. Der erste Ausdruck anders geklammert (Wie ausgewertet wird) Dann ist es für dich logisch.

if (not 2) = (1) then Edit: nur aus Prinzip zum 3. Mal weil zu langsam Wie die Geier alle
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#5

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 19:33
Lach, thx.

Daher verlangen andere Sprachen bei Sowas eine Klammerung. Da muß man erstmal drauf kommen, not 2 ist ein binäres not...
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 19:41
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.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 20:05
Lach, thx.

Daher verlangen andere Sprachen bei Sowas eine Klammerung. Da muß man erstmal drauf kommen, not 2 ist ein binäres not...
Vergleiche mit
Code:
-2+1 <> -(2+1)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 20:18
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*
$2B or not $2B
  Mit Zitat antworten Zitat
DSCHUCH

Registriert seit: 6. Jun 2007
Ort: Dresden
185 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#9

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 20:21
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:
if not 'a' = 1 then
geht tatsächlich auch als syntax.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#10

AW: not 2=1 ist nicht not(2=1)

  Alt 6. Okt 2012, 23:00
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....
Du hast es nicht verstanden, oder?
NOT und AND sind sowohl logische als auch -wie du es nennst- Integer-Operatoren.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz