AGB  ·  Datenschutz  ·  Impressum  







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

Problem Klammern

Ein Thema von Gehstock · begonnen am 16. Jun 2008 · letzter Beitrag vom 17. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#1

Problem Klammern

  Alt 16. Jun 2008, 22:46
wie wird folgende Klammer behandelt

Delphi-Quellcode:
if (b and X) = 0 then begin
        showmessage('bc - '+inttostr(b)+' - '+inttostr(X));//kontrolle Ausgabe [b]bc - 5 - 2[/b] sollte also keinen Fehler ausgeben
         showmessage('Segment fehlt');
        end

dachte das es das selbe sein sollte
wie
Delphi-Quellcode:
if (b = 0 ) and (X = 0 ) then begin
        showmessage('bc - '+inttostr(b)+' - '+inttostr(X));//kontrolle
         showmessage('Segment fehlt');
        end
oder irre ich mich da weil der 2. Code keinen Fehler ausgibt
Marcel
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Problem Klammern

  Alt 16. Jun 2008, 22:50
Welchen Typen haben b und x?
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Problem Klammern

  Alt 16. Jun 2008, 22:51
Im oberen Fall wird getestet, ob b und X beide true ergeben. Das ergebniss ist dann ein Wahrheitswert der mit 0 verglichen wird.

Unten testest du, ob sowohl b als auch X null sind.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Problem Klammern

  Alt 16. Jun 2008, 23:00
Wenn x und B Integer sind (was ich vermute) ist and ein Operator der b und x Binär mit AND verknüpft.
Beim 2. Code ergibt die 1.Klammer einen Boolean-Wert und die 2. auch, sodass 2 Boolean-Werte da sind, dann ergibt and true, wenn beide wahr sind.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
bluesbear

Registriert seit: 14. Dez 2005
Ort: Hahnstätten
355 Beiträge
 
Delphi 2007 Enterprise
 
#5

Re: Problem Klammern

  Alt 16. Jun 2008, 23:03
Falls b und X Integer sind, dann ist z.B. für b=2 und X=1 (b and X) = 0
Klaus M. Hoffmann
  Mit Zitat antworten Zitat
Gehstock

Registriert seit: 28. Jan 2006
Ort: Görlitz / Sachsen
489 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Problem Klammern

  Alt 16. Jun 2008, 23:06
ja sind beides Integer
Marcel
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: Problem Klammern

  Alt 16. Jun 2008, 23:07
Jupp, dann werden die Binär mit AND verknüpft, die 1. Variante kann also nicht funktionieren.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
thabaker

Registriert seit: 1. Jul 2007
50 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Problem Klammern

  Alt 16. Jun 2008, 23:15
die erste Variante sollte wohl so was wie ein "Abkürzung" der Zweiten sein, die besagt: "wenn beide Zahlen 0 sind".
Wenn nun in der Ersten stehen würde
Code:
if (b or X) = 0 then
hat man dieselbe Aussage. Dann müsste nur das "and" durch ein "or" ersetzt werden.
  Mit Zitat antworten Zitat
Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#9

Re: Problem Klammern

  Alt 16. Jun 2008, 23:27
if (b or X) = 0 then Damit das aber jetzt auch verstanden wird, erläuter ich das kurz noch mal, da sonst vielleicht etwas falsch interpretiert wird.
Bei or wird beim Ergebnis ein Bit gesetzt, wenn bei mindestens einer der Zahlen an der Stelle ein Bit gesetzt ist. Macht man z.B. 3 or 5 sieht das so aus:
Code:
011   <- 3
101   <- 5
---
111
Da an jeder Stelle bei mind. einer Zahl eine 1 steht, steht die 1 auch im Ergebnis. Wenn jetzt 0 rauskommen soll, darf beim Ergebnis kein Bit gesetzt sein. Und das Geht nur, wenn die beiden Zaheln 0 sind:
Code:
0
0
--
0
Denn wenn auch nur ein Bit gesetzt wäre, würde etwas höheres als 0 rauskommen.

Hoffe, du hast es jetzt ein wenig besser verstanden
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Problem Klammern

  Alt 17. Jun 2008, 09:07
Also ich sehe das anderst.

if (b and X) = 0 then
daraus resultiert:
if (b = True) and (X = True) = 0 then
Da True nichts anderes als "grösser oder gleich 1" ist, wird geprüft, ob b und X grösser oder gleich 1 sind.
Je nach Wert der Variablen kommt dann z.B so was raus:
if (True) and (False) = 0 then
Das and hat Vorrang, daher wird daraus:
if True = 0 then
Somit wird der if-Zweig nicht ausgeführt, weil True nicht gleich 0 ist.

Oder ist da ein Denkfehler drin?
Ich alsse mich gerne belehren...
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  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 12:38 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