![]() |
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:
Nice Cristmas to all
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. Corpsman |
Re: Negativ beispiel zum ansehn ;)
Das Programm gibt alles mögliche aus, weil der Integer x nicht initialisiert wurde.
|
Re: Negativ beispiel zum ansehn ;)
Aha, interessant :stupid: .
Delphi-Quellcode:
@Corpsman: Hab richtig geraten ;) .
x := 1;
|
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. |
Re: Negativ beispiel zum ansehn ;)
Sorry, Doppelpost... Firefox... :wall:
EDIT: Bei mir kommt übrigens 7 raus. ;) |
Re: Negativ beispiel zum ansehn ;)
Also wenn es euch interessiert, bei mir kommt auch 7 raus. :hi:
|
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:
Na ne Ahnung was hier rauskommt ?
x = 5;
x += x++; |
Re: Negativ beispiel zum ansehn ;)
Zitat:
|
Re: Negativ beispiel zum ansehn ;)
Zitat:
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:
dann muß 12 rauskommen.
x += ++x;
Was hast du denn erwartet ? Gruß Hagen |
Re: Negativ beispiel zum ansehn ;)
Zitat:
:gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 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