Die Nerd Enzyklopädie 28 - Damönen aus der Nase

In der Informatik gibt es den Begriff des „undefinierten Verhaltens“ (undefined behaviour) [WIKI7]: Wenn eine Software bzw. Code auf unterschiedlichen Systemen zu unterschiedlichen Ergebnissen führt, was natürlich nicht vorkommen darf, spricht man von eben diesem „undefinierten Verhalten“. In der Programmiersprache C hat sich dafür der Begriff „nasal demons“ etabliert. Den Ursprung hat dieser Ausspruch in der Usenet Gruppe comp.std.c und einer Diskussion in 1992. Ein Nutzer meinte damals:

“When the compiler encounters [a given undefined construct] it is legal for it to make demons fly out of your nose” [CATB]

Übersetzt also: Trifft der Compiler auf ein „undefiniertes Konstrukt“, sollte es ihm erlaubt sein, Dämonen aus deiner Nase fliegen zu lassen.

Ein einfaches Beispiel in C ist z.B. dieses [ACCU1]:

bool b;  
if (b)  
  printf(“b is true\n”);  
if (!b)  
  printf(“b is false\n”);

B wird als Boolesche Variable deklariert, aber nicht initialisiert. Es ist also nicht eindeutig klar, ob B wahr oder falsch ist. Der Compiler darf machen, “was er will”. Wie z.B. Dämonen aus deiner Nase fliegen lassen…