Donnerstag, Mai 01, 2008

Mal wieder Zeit

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

Keine Kommentare: