![]() |
Übersetzung C -> Delphi: Verkürzte if-Bedingung
Ich habe hier den folgenden kranken C-Code:
Code:
Wie sieht das in Delphi aus?
UINT Sum(UINT uNum) {
return((uNum == 0) ? 0 : (uNum + Sum(uNum - 1))); } |
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
Delphi-Quellcode:
function Sum(uNum: Cardinal):Cardinal;
begin if uNum=0 then result := 0 else result := uNum + Sum(uNum - 1); end; |
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
Dank dir. Der Code ist wemfalls lesbar. Und wieder ein Grund mehr, warum mir eine Sprache unsympathisch ist, bei der man so kranken Code schreiben kann. ;)
|
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
Zitat:
|
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
Das ist der sog. ternäre Operator, den gibt es in Java oder PHP auch ;)
|
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
Die Funktion lässt sich durch eine Formel weit eleganter und schneller abbilden:
![]() |
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
@Medium: Ich weiß, aber damit bekomme ich keinen Stacküberlauf hin, aber genau den brauche ich. ;)
|
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
Dann nimm doch ein Argument, dass groß genug ist:
Delphi-Quellcode:
jkr
program tso;
{$APPTYPE CONSOLE} {$R-} uses Classes; function Sum(const Num: Cardinal): Cardinal; begin if Num = 0 then Result := 0 else Result := Num + Sum(Num - 1); end; begin Writeln(Sum(MaxInt)); end. |
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
Genau das tue ich ja auch. Wenn ich aber den Gauss-Algorithmus benutze, dann bekomme ich keinen StackOverflow, sondern ein Integer-Overflow. ;)
|
Re: Übersetzung C -> Delphi: Verkürzte if-Bedingung
Wofür brauchst Du einen Stack Overflow? (Klar, dass Du ihn mit einer nicht-rekursiven Funktion nur schwerlich erzeugen kannst.)
Den Integer-Überlauf könntest Du mit {$Q-} verhindern. Fälschlicherweise hatte ich im Beispiel {$R-} verwendet. jkr |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 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