Delphi-PRAXiS
Seite 1 von 2  1 2      

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)

Corpsman 24. Dez 2006 11:01


Negativ beispiel zum ansehn ;)
 
Hallo Leuts.

Ich habe hier mal ein kleines Beispiel das ihr euch ansehen sollt.

Es geht mir nicht um Optimierung, oder sonst was. Ich will eigentlich nur das ihr euch überlegt was das Programm ausgibt.

Dann führt es aus und lasst euch überraschen.

Der witz ist das Hoffentlich niemand so Programmiert. Denn die hier entstehenden Nebeneffeckte sind ja schon heftig.

Delphi-Quellcode:
Unit Unit1;

Interface

Uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

Type
  TForm1 = Class(TForm)
    Button1: TButton;
    Procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  End;

Var
  Form1: TForm1;
  x: integer;

Implementation

{$R *.DFM}

Function f: integer;
Begin
  x := x + 1;
  result := x;
End;

Function g: integer;
Begin
  x := x * 2;
  result := x;
End;

Procedure TForm1.Button1Click(Sender: TObject);
Begin
  x := 1;
  showmessage(inttostr(f + x * g));
End;

End.
Nice Cristmas to all

Corpsman

3_of_8 24. Dez 2006 11:15

Re: Negativ beispiel zum ansehn ;)
 
Das Programm gibt alles mögliche aus, weil der Integer x nicht initialisiert wurde.

Khabarakh 24. Dez 2006 11:30

Re: Negativ beispiel zum ansehn ;)
 
Aha, interessant :stupid: .
Delphi-Quellcode:
x := 1;
@Corpsman: Hab richtig geraten ;) .

Robert Marquardt 24. Dez 2006 11:32

Re: Negativ beispiel zum ansehn ;)
 
Also ich sehe da ein X:= 1; in Button1Click.
Was das Ergebnis ist kann man nur raten. Das haengt davon ab wie der Compiler optimiert.

3_of_8 24. Dez 2006 11:39

Re: Negativ beispiel zum ansehn ;)
 
Sorry, Doppelpost... Firefox... :wall:

EDIT: Bei mir kommt übrigens 7 raus. ;)

pilic 24. Dez 2006 11:42

Re: Negativ beispiel zum ansehn ;)
 
Also wenn es euch interessiert, bei mir kommt auch 7 raus. :hi:

Corpsman 24. Dez 2006 11:50

Re: Negativ beispiel zum ansehn ;)
 
OK ich sehe euch sind die Hoarschen Regeln nicht unbedint ein Begriff.

Ja 7 ist richtig.

Compiliert ihr das unter Java dann kommt übrigens 10 raus.

Hier noch ein negatives C++ Beispiel

Delphi-Quellcode:
x = 5;
x += x++;
Na ne Ahnung was hier rauskommt ?

Daniel G 24. Dez 2006 11:51

Re: Negativ beispiel zum ansehn ;)
 
Zitat:

Zitat von 3_of_8
Das Programm gibt alles mögliche aus, weil der Integer x nicht initialisiert wurde.

Natürlich wird der initialisiert... :wink:

negaH 24. Dez 2006 12:27

Re: Negativ beispiel zum ansehn ;)
 
Zitat:

Hier noch ein negatives C++ Beispiel

Code:
x = 5;
x += x++;
Na ne Ahnung was hier rauskommt ?
Sollte, bzw. muß 11 rauskommen. x += x geht vor x++, dh. x++ muß laut standard am Ende ausgeführt werden.
Das Verhalten sollte eigentlich bei allen C Compilern konsistent sein und überall 11 rauskommen. Ich sehe das als reguläres C an, kann man also so schreiben.

Wenn du schreibst

Code:
x += ++x;
dann muß 12 rauskommen.

Was hast du denn erwartet ?

Gruß Hagen

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

Re: Negativ beispiel zum ansehn ;)
 
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:


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:37 Uhr.
Seite 1 von 2  1 2      

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