Version 1:
Das klassische "Hello, World" in ANSI C Syntax:
#include <stdio.h>
int main(void)
{
printf("Hello, World\n");
return 0;
}
Version 1a:
Variation der klassischen Version:
#include <stdio.h>
int main(void)
{
fprintf(stdout, "Hello, World\n");
return 0;
}
Im Vergleich zur Version 1:
Version 2:
Variation der klassischen Version:
#include <stdio.h>
int main(void)
{
puts("Hello, World");
return 0;
}
Im Vergleich zur Version 1:
Version 2a:
Variation der klassischen Version:
#include <stdio.h>
int main(void)
{
fputs("Hello, World\n", stdout);
return 0;
}
Im Vergleich zur Version 2:
Version 3:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char msg[13] =
{ 'H', 'e', 'l', 'l', 'o', ',', ' ', 'W', 'o', 'r', 'l', 'd', '\n' };
int i;
for ( i=0; i<13; i++ )
putchar(msg[i]);
return 0;
}
Version 3a:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char msg[13] =
{ 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 10 };
int i;
for ( i=0; i<13; i++ )
putchar(msg[i]);
return 0;
}
Im Vergleich zur Version 3:
Version 3b:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char msg[13] =
{ 0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20,
0x57, 0x6f, 0x72, 0x6c, 0x64, 0x0a };
int i;
for ( i=0; i<13; i++ )
putchar(msg[i]);
return 0;
}
Im Vergleich zur Version 3:
Version 3c:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char msg[13] =
{ 0110, 0145, 0154, 0154, 0157, 054, 040,
0127, 0157, 0162, 0154, 0144, 012 };
int i;
for ( i=0; i<13; i++ )
putchar(msg[i]);
return 0;
}
Im Vergleich zur Version 3:
Version 3d:
Ausgabe von "Hello, World" als Zeichenkette
#includeint main(void) { char msg[] = "Hello, World"; puts(msg); return 0; }
Version 3e:
Ausgabe von "Hello, World" als 'codierte' Zeichenkette
#includeIm Vergleich zur Version 3:int main(void) { char msg[] = { 72, 101, 108, 108, 111, 44, 32, 87, 111, 114, 108, 100, 0 }; puts(msg); return 0; }
Version 3f:
Ausgabe von "Hello, World" als 'codierte' Zeichenkette
#include <stdio.h>
int main(void)
{
char msg[] = "\x48\x65\x6c\x6c\x6f\x2c\x20\x57\x6f\x72\x6c\x64\x0a";
puts(msg);
return 0;
}
Im Vergleich zur Version 3e:
Version 3g:
Ausgabe von "Hello, World" als 'codierte' Zeichenkette
#include <stdio.h>
int main(void)
{
char msg[] = "\110\145\154\154\157\54\40\127\157\162\154\144\12";
puts(msg);
return 0;
}
Im Vergleich zur Version 3e:
Version 4:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char msg[] = "Hello, World\n";
int l = strlen(msg);
int i;
for ( i=0; i<l; i++ )
putchar(msg[i]);
return 0;
}
Im Vergleich zur Version 3:
Version 5:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char msg[] = "Hello, World\n";
int i;
for ( i=0; msg[i]; i++ )
putchar(msg[i]);
return 0;
}
Im Vergleich zur Version 4:
Version 5a:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char *msg = "Hello, World\n";
for ( ; *msg; msg++ )
putchar(*msg);
return 0;
}
Im Vergleich zur Version 5:
Version 6:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char *msg = "Hello, World\n";
while ( *msg )
putchar(*msg++);
return 0;
}
Im Vergleich zur Version 5a:
Version 7:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char *msg = "Hello, World\n";
while ( *msg )
fputc(*msg++, stdout);
return 0;
}
Im Vergleich zur Version 6:
Version 8:
Zeichenweise Ausgabe von "Hello, World"
#include <stdio.h>
int main(void)
{
char *msg = "Hello, World\n";
while ( fputc(*msg++, stdout) ) ;
return 0;
}
Im Vergleich zur Version 7:
Version 9a:
#include <stdio.h>
int main(void)
{
union {
char c[16];
long z[4];
} p;
int i = 0;
p.z[0] = 0x6c6c6548; /* Variante fuer little endian */
p.z[1] = 0x57202c6f; /* z.B. PC */
p.z[2] = 0x646c726f;
p.z[3] = 0x0000000a;
while ( fputc(p.c[i++], stdout) ) ;
return 0;
}
Im Vergleich zur Version 8:
Version 9b:
#include <stdio.h>
int main(void)
{
union {
char c[16];
long z[4];
} p;
int i = 0;
p.z[0] = 0x48656c6c; /* Variante fuer big endian */
p.z[1] = 0x6f2c2057; /* z.B. einige Workstation */
p.z[2] = 0x6f726c64;
p.z[3] = 0x0a000000;
while ( fputc(p.c[i++], stdout) ) ;
return 0;
}
Im Vergleich zur Version 9a:
Version 10b:
Zeichenweise Ausgabe von "Hello, World", Text ist (leicht) codiert gespeichert
#includeIm Vergleich zur Version 9b:int main(void) { union { char c[16]; long z[4]; } p; int i = 0; p.z[0] = 0x48646e6f; /* Variante fuer big endian */ p.z[1] = 0x6b292650; /* z.B. einige Workstation */ p.z[2] = 0x677b666f; p.z[3] = 0x060d6762; while ( fputc((p.c[i++])^i, stdout) ) ; return 0; }
Vergleich der mit verschiedenen Systemen erstellten Objektcodedateien:
---------------------------------------------------------
AIX WIN32 DOS
Ver cc cc gcc gcc gcc bcc msc msc gcc
sion -O -O1 -O2 -Od
---------------------------------------------------------
1 949 933 710 694 694 389 311 324 489
2 949 933 710 694 694 387 308 321 489
1a 415 329 343 534
2a 413 327 341 534
3 1189 1137 994 886 936 468 421 444 547
3a 1190 1138 995 887 937 471 423 446 547
3b 1190 1138 995 887 937 471 423 447 547
3c 471 423 447 547
4 1307 1247 1064 952 998 498 436 463 597
5 1253 1161 1010 910 956 474 407 435 561
6 1229 1161 974 886 936 448 395 423 513
7 1097 1073 866 830 826 426 355 368 562
8 1133 1107 858 818 818 423 349 364 562
9a 1070 1036 738 778 738
9b 1070 1036 738 778 738
10b 1079 1061 790 446 746