AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

c++ vs delphi

Ein Thema von Lesco · begonnen am 4. Apr 2005 · letzter Beitrag vom 9. Apr 2005
 
tommie-lie
(Gast)

n/a Beiträge
 
#11

Re: c++ vs delphi

  Alt 5. Apr 2005, 15:01
Zitat von Binärbaum:
Code:
{
  int a;
  char b;

  b= 'A';
  a= 7;
  b= b+a;///na, was sagst du dazu?
}
Dazu sage ich, daß das eines der Dinge ist, die mir an C gefallen, nämlich daß die Daten so gehandhabt werden, wie sie für den Prozessor vorliegen und der Programmierer nicht meilenweit von der Architektur alles mit Samthandschuhen serviert bekommt.
Der C-Char und der Delphi-Char sind zwei verschiedene Datentypen. Ein Char in C ist nur ein Byte, was auch immer ich darin speichere und als was auch immer ich dieses Byte interpretiere. "c = 'A'" ist eine Zuweisung, wobei "'A'" zwar vom Menschen als Buchstabe interpretiert wird, in Wirklichkeit jedoch nichts anderes als die Zahl 65 ist. Genauso wie ShortInt und LongInt in Delphi sind auch char und int in C zuweisungskompatibel. b enthält danach den Wert 65+7=72. Versuche ich das wieder als Zeichen zu interpretieren (indem ich es ohne in einen String umzuwandeln ausgebe, kriege ich das Zeichen "H", aber nur, weil die Konsole die Zahl 72 aus dem Buffer als H auf den Bidlschirm pinselt.
Die korrekte Delphi-Übersetzung wäre also eher:
Delphi-Quellcode:
var
  a: LongInt;
  b: ShortInt;
begin
  b := Ord('A'); //(oder "b := Byte('A');", ich weiß nicht, ob der Compiler sowas zulässt,
                 // vielleicht geht auch schon das implizite Casting mit "b := 'A';"
  a := 7;
  b := b + a;
end;

Zitat von malo:
Bei folgendem Code kommt aber auch eine AV
Code:
{
  printf(b);
}
Klar, bei
Delphi-Quellcode:
var
  x: PLongWord;
begin
  x := nil;
  x^ := 123;
end;
kommt auch eine

Wenn man printf() richtig anwendet, kommt keine Zugriffsverletzung, sondern wie oben gesagt ein "H", da b (72) als ASCII-Zeichen (%c) interpretiert wird:
Code:
{
  int a;
  char b;

  b= 'A';
  a= 7;
  b= b+a;///na, was sagst du dazu?
  printf("%c", b);
}
So, nu aber Schluß mit dem versuchten Beweis, daß C das Böse[tm] selbst ist.



Zitat von mael:
Es bleibt natürlich der Nachteil der Header-Übersetzungen (ist aber eigentlich nur fürs DDK relevant).
Und für FreePascal, wenn man's unter Linux einsetzen will

Zitat von mael:
Diese peinliche Superhero Werbung von Borland ist ja auch dem Delphi-Ansehen nicht gerade zuträglich.
Vielleicht Kompensation für einen kleinen... Entwicklungsstand
Und Hunde die Bellen, beißen nicht...


Edit: Mann, mann, nichtmal taggen kann ich richtig
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:31 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