So, jetzt finde ich langsam wieder ein bisschen Zeit mich um mein Blog zu kümmern. Das nutze ich gleich mal um ein Stück Code zu posten, was mich schon länger fasziniert.
Es ist eigentlich nur kurz, aber ich fordere jeden heraus selbst herauszufinden, was es tut, ohne es vorher zu kompilieren.
#include <stdio.h>
struct values {
int a;
char b;
short c;
double d;
int* e;
};
int main() {
int i = 0;
struct values val;
val.a = 1819043144;
val.b = 111;
val.c = 8236;
val.d = 17772928018443055750142378752
9445406531473442920180139133343049801
2916652608327063483957532130480119417
0146354883598704890228200485135295197
79571104209539432448.000000;
val.e = &i;
char* pointer = (char *) &val;
printf("%s\n", pointer);
return 0;
}
Die Programmiersprache ist (offensichtlich) C. Die Zahl hinter 'val.d' muss selbstverständlich auf eine Zeile - die hab ich nur der besseren Lesbarkeit halber umgebrochen.
Wer rausgefunden hat was dieses Programm macht und seine Hypothese überprüfen will: übersetzen lässt es sich einfach mit
gcc -Wall $DATEINAME
Man beachte, dass - trotz "Warn-Parameter" '-Wall' keine Warnungen ausgestoßen werden. Man kann mit C und Pointern halt wunderbar kryptische Sachen schreiben :)
Donnerstag, Mai 01, 2008
Mal wieder Zeit
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen