Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Negativ beispiel zum ansehn ;) (https://www.delphipraxis.net/83011-negativ-beispiel-zum-ansehn-%3B.html)

3_of_8 24. Dez 2006 12:46

Re: Negativ beispiel zum ansehn ;)
 
10? Das kann doch gar ned stimmen... :gruebel:

Andidreas 24. Dez 2006 12:47

Re: Negativ beispiel zum ansehn ;)
 
@corpsman
was für nebeneffekte sollen denn auftreten???

Balu der Bär 24. Dez 2006 12:48

Re: Negativ beispiel zum ansehn ;)
 
@3_of_8: Da ist Visual C# aber anderer Meinung. :P

negaH 24. Dez 2006 12:53

Re: Negativ beispiel zum ansehn ;)
 
x += x++; sollte das gleiche sein wie

x += x;
x++;

gleich

x = x + x;
x = x +1;

10 = 5 + 5;
11 = 10 +1;

Ich habs im GCC probiert, kommt 11 und 12 raus. Es gibt aber unter den vielen Compilerswitches auch welche die diese Verhalten beeinflussen, und da wirds dann typisch C-doof ;)

Zitat:

f() + x * g()
da sollte auch 7 rauskommen, auch wenn das Verhalten "undokumentiert" ist. Der Formalparser wird zuerst x * g() auflösen. Dabei gehen Funktionsaufrufe vor Variablen. D.h. also 1. g() dann 2. * x und 3. + f(), ergibt 7. Das sollte ebenfalls in jeder Borland PASCAL Version identische Resulate liefern, unabhängig von den Compilerswitches. Denoch ist es undokumentiert. Ein schlechter Stil ist es aber aus anderen Gründen. Wir programmieren indem wir saubere Schnittstellen/Black Boxes erzeugen. Da aber in diesem Beispiel Funktionsresulate und Modifikation globaler Variablen kombiniert werden, dh. funktion g() liefert im Grunde gleich 2 Resultate (Resulat und x+1) zurück. Das ist schlechter Programmierstil da die Modifikation von X nicht in der Schnittstelle zur Black Box g() sichtbar ist.
Das Beispiel sieht aber sehr konstruiert aus, ich habe bisher noch nie solchen Code im realen Einsatz gesehen.

Gruß Hagen

3_of_8 24. Dez 2006 13:38

Re: Negativ beispiel zum ansehn ;)
 
Zitat:

Zitat von Balu der Bär
@3_of_8: Da ist Visual C# aber anderer Meinung. :P

Frei nach Daniel: "Es wird Zeit, dass wir C# mal zeigen, wer hier die Hosen an hat."

JasonDX 24. Dez 2006 14:55

Re: Negativ beispiel zum ansehn ;)
 
Zitat:

Zitat von Balu der Bär
Zitat:

Zitat von negaH
Code:
x = 5;
x += x++;
Sollte, bzw. muß 11 rauskommen.

Wieso? Unter C# erhalte ich 10 als Ergebnis, bei x += ++x erhalte ich 11.

:gruebel:

*klick* for the answer :zwinker:

Frohe Weihnachten :)
Mike

Corpsman 24. Dez 2006 15:38

Re: Negativ beispiel zum ansehn ;)
 
@Andidreas

Du siehst hier gibt es jede menge Diskusionsgrundlage. Und es ist definitiv nicht Klar was nun rauskommen soll.

Das Problem an der sache ist das die Sprache C , bzw Pascal an diesen stellen nicht eindeutig definiert sind und je nach Compiler anders interpretiert wurden.

Da in den Gängigsten Tutorials in der Regel immer nur steht wie man dies und das macht, wollte ich euch eigentlich nur mal ein Beispiel zeigen wie ihr es bitte nicht machen sollt.

Übrigens gibt es Sehr viele bei denen das so ist.

Java, C, Pascal gehören definitiv auch dazu ;)

Schöne Weihnacht noch.

Balu der Bär 24. Dez 2006 17:54

Re: Negativ beispiel zum ansehn ;)
 
Zitat:

Zitat von JasonDX
*klick* for the answer :zwinker:

Ah danke, dann ist ja alles klar. :P

Luckie 24. Dez 2006 18:03

Re: Negativ beispiel zum ansehn ;)
 
Eine Sprache, die so etwas zu lässt, gehört verboten. Ich bin froh, dass so etwas in Delphi nicht möglich ist.

Balu der Bär 24. Dez 2006 18:07

Re: Negativ beispiel zum ansehn ;)
 
Wie war das, alles hat Vor- und Nachteile... :zwinker: :P


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:26 Uhr.
Seite 2 von 2     12   

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