![]() |
c(f^=g^=f^=g;) nach Delphi
ich habe folgende Quellcodezeile, welche in C 2 Zahlen ohne Hilfsvariable vertauscht:
Code:
nun möcht ich das in Delphi auch machen. Geht das irgendwie?
int f = 2, g = 3;
f^=g^=f^=g; ^ ist xor [Edit] Beitrag erweitert [/Edit] |
Re: c(f^=g^=f^=g;) nach Delphi
In Delphi geht das (glaube ich) nicht, also um 'ne Hilfsvariable wirst du wohl nicht rumkommen.
Delphi-Quellcode:
h := f; f := g; g := h;
|
Re: c(f^=g^=f^=g;) nach Delphi
Geht doch:
Delphi-Quellcode:
oder:
a:=a+b;
b:=a-b; a:=a-b;
Delphi-Quellcode:
a := a xor b;
b := a xor b; a := a xor b; |
Re: c(f^=g^=f^=g;) nach Delphi
cool!
danke!! |
Re: c(f^=g^=f^=g;) nach Delphi
OK, aber mit dieser Variante kann es auch zu Problemen kommen.
(versuch mal 3.000.000.000.000 und 0,000.000.000.003 zu tauschen ^^) |
Re: c(f^=g^=f^=g;) nach Delphi
@himitsu: Berechtigter Einwand, aber so ein Vertauschen kommt sicher sehr häufig vor. Für "normale" Zahlen funktioniert Toms Lösung sicher.
|
Re: c(f^=g^=f^=g;) nach Delphi
Hallo!
Bist du denn auch sicher, dass solch ein Code wirklich einen Sinn macht (auch der von Toms)? Die rechtsassoziativen Zuweisungsoperatoren von C können ja durchaus oft sehr praktisch sein, aber bei so einem Ding würd ich himitsus Code allemal vorziehen. Ist doch eine Mordsaufwand bis du (falls du es mal vergessen haben solltest ;)) geschweigedenn jemand anderes durchschaut hat was dieser Code macht. Da würd ich an deiner Stelle lieber auf Leserlichkeit (= Wartbarkeit = Fehlerunanfälligkeit [rechtsassoziativ :mrgreen:] ) setzen. Zumal: Was macht schon eine lokale Hilfsvariable? Viele Grüße, Sebastian |
Re: c(f^=g^=f^=g;) nach Delphi
na ja, es geht in manchen programmen nicht darum, sie so lesbar wie möglich zu machen, sondern manchmal auch so unlesbar wie möglich.
v.a. wenn das prog für die Schule is und man den prof. nicht mag, der das Prog verbessern muss! |
Re: c(f^=g^=f^=g;) nach Delphi
Zitat:
|
Re: c(f^=g^=f^=g;) nach Delphi
@Skiron:
Och wie gemein :mrgreen: Aber pass auf, auch die Leserlichkeit gehört zur Qualität eines Codes und kann deshalb mit in die Wertung einfließen. Viele Grüße, Sebastian |
Re: c(f^=g^=f^=g;) nach Delphi
Zitat:
man kann ihm aber immer noch einreden, dass der Quellcode (aufgrund der Kommentare) leserlich ist, und ob jemand dann die einzelnen Teile des Algos versteht, eine andere Frage ist, die nicht unbedingt vom Quellcode, sondern mehr von der Person abhängig ist!! :zwinker: :mrgreen: |
Re: c(f^=g^=f^=g;) nach Delphi
Kommentare sind natürlich immer gut, aber ein selbsterklärender Code macht sie ja auch wieder überflüssig...
Da sehe ich auch einen großen Vorteil von Pascal gegenüber C - der code ist IMHO wesentlich übesichtlicher (allein schon durch die Verwendung menschlicher Worte zb für Operatoren). Zum Angeben (vor Laien oder "Script-Kiddies" ;) - Profis werden leserlichen Code dem kryptischen Platzsparcode vorziehen) kann man dann natürlich C wieder besser gebrauchen. Vielleicht lässt sich dein Prof ja beeindrucken :wink: Viele Grüße, Sebastian //der morgen Abi schreibt und sich etwas ablenkt - will heißen: sorry, ist ein bisschen OT geworden... |
Re: c(f^=g^=f^=g;) nach Delphi
Also negativ beurteilen dürfte der Prof so etwas nicht. Wer täglich solchen source schreibt sieht sofort was der source bewirkt (ich würde es ni sehen). Und man kann/sollte ja nicht einfach negativ beurteilen weil man zu blöd/unwissend ist etwas zu verstehen
Für eine Negativbeurteilung spricht das der Source zusätzliche Rechenoperationen ausführt (+ und -) und somit die performance mindert |
Re: c(f^=g^=f^=g;) nach Delphi
Zitat:
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:47 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