Autor Beitrag
HenryHux
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 15.06.11 14:24 
Hey, habe mich immer gewundert, dass meine Experimente nicht das machen, was sie sollen.
Dabei liegt es wohl an den einfachsten Grundlagen.
Könnt ihr mir mal bitte erklären, wieso das hier einen Unterschied macht?
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
  
  Len := 1;
  if not (len < 3then showmessage('true')
  else showmessage('false');

  Len := 1;
  if (not len < 3then showmessage('true')
  else showmessage('false');


Ich versteh die Logik dahinter nicht :D

lg
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 15.06.11 14:30 
Naja, im ersten Fall wird das not auf den boolschen Wert "len < 3" angewendet: nicht "Ist die Länge kleiner als 3 oder nicht?"

Im zweiten Fall schaust du ob "not len" bitweise negiert kleiner als 3 ist. Wenn du also die Zahl 2 hast, ist das binär geschrieben 00000010, dann wird da ausgewertet:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
if (not len < 3) then
-->
if (not 00000010 < 3) then
-->
if 11111101 < 3 then
...


Zuletzt bearbeitet von jaenicke am Mi 15.06.11 14:31, insgesamt 1-mal bearbeitet
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Mi 15.06.11 14:30 
Bei Deinem ersten Versuch wird das (Boolsche) ergebniss des Ausdrucks "(len < 3)" genottet (das Wort lass ich mir patentieren).
Beim 2. Versuch, wird die Variable len (vermutlich Integer) genottet.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
HenryHux Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 542
Erhaltene Danke: 33

Windows 7 Premium
Delphi XE, Eclipse
BeitragVerfasst: Mi 15.06.11 14:35 
Ok, danke.
Hat mich nicht nur Zeit gekostet.
Auf sowas muss man dann erstmal kommen :D

Danke,

lg
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19314
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 15.06.11 15:03 
Wenn du nicht weißt welcher Operator priorisiert wird, klammere einfach immer wie du es meinst, dann kann nichts passieren. ;-)