34 Stimmen

Ich verstehe diesen C/C++-Witz nicht

Nach der Lektüre dieses Artikel auf thedailywtf.com, bin ich mir nicht sicher, ob ich den Witz wirklich verstanden habe.

Dort steht, dass ein Typ den Code von

int function() 
{ 
  int x;
  char data_string[15];
  ...
  x = 2;
  strcpy(data_string,"data data data");
  ...
}

a

int function() 
{
  int x = 2;
  char data_string[15] = "data data data";
  ...
}

überall im Code und das hat aus irgendeinem Grund die Größe der ausführbaren Datei von 1 auf 2 CDs erhöht (oder vielleicht auch nicht?).

Natürlich kenne ich mich mit C/C++ nicht gut genug aus, um diesen Witz zu verstehen, aber am merkwürdigsten ist, dass das zweite Code-Listing "sauberer" zu sein scheint - zumindest nach dem, was man mir in der Schule beigebracht hat (nämlich, dass das Initialisieren von Variablen eine gute Sache ist, keine schlechte).

-1voto

sharptooth Punkte 162790

Ja, der zweite Code ist sauberer, aber je nach Compiler kann er zur Ausgabe von mehr Maschinencode führen. Dies ist völlig compilerabhängig, aber der Punkt des WTF-Artikels ist, dass der Compiler im zweiten Fall eine Kopie des Strings/Integer-Wertes für jeden solchen Codeschnipsel zuweisen würde, während er dies im ersten Fall nur einmal pro Programm tun würde.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X