AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Negativ beispiel zum ansehn ;)

Ein Thema von Corpsman · begonnen am 24. Dez 2006 · letzter Beitrag vom 24. Dez 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#1

Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:01
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
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:15
Das Programm gibt alles mögliche aus, weil der Integer x nicht initialisiert wurde.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#3

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:30
Aha, interessant .
x := 1; @Corpsman: Hab richtig geraten .
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:32
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.
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:39
Sorry, Doppelpost... Firefox...

EDIT: Bei mir kommt übrigens 7 raus.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von pilic
pilic

Registriert seit: 10. Aug 2006
Ort: Aschbach
131 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:42
Also wenn es euch interessiert, bei mir kommt auch 7 raus.
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:50
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 ?
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
Daniel G
(Gast)

n/a Beiträge
 
#8

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 12:51
Zitat von 3_of_8:
Das Programm gibt alles mögliche aus, weil der Integer x nicht initialisiert wurde.
Natürlich wird der initialisiert...
  Mit Zitat antworten Zitat
Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#9

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 13:27
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
  Mit Zitat antworten Zitat
Balu der Bär
(Gast)

n/a Beiträge
 
#10

Re: Negativ beispiel zum ansehn ;)

  Alt 24. Dez 2006, 13:38
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.

  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:21 Uhr.
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