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