Seite 1 von 1

if abfrage

Verfasst: Mi Jul 27, 2011 8:54 pm
von Alchimedes
Hallo !

Ich hab folgende Frage:

wieso sagt der Ausdruck aus dem C-Tutorial das if ( decision) ungleich null ist?
muesste der Ausdruck nicht heissen if ( decision !=0) ??

Danke !

Re: if abfrage

Verfasst: Mi Jul 27, 2011 9:19 pm
von Dirty Oerti

Code: Alles auswählen

if ( decision )
Das bedeutet implizit das Gleiche wie

Code: Alles auswählen

if ( decision != 0 )
Von daher müsste es, wenn man es korrekt ausschreiben will, wirklich "!= 0" heißen, allerdings ist die obige Abkürzung üblich, wenn es sich um Werte handelt, die z.B. als Fehlerabfrage dienen. Dann bedeutet ein Wert von 0 "kein Fehler", jeder andere Wert bezeichnet einen Fehler.

Code: Alles auswählen

int error = tu_etwas();
if (error)
{
// hilfe ..
}
else
{
// alles ok, error hat den Wert 0, sprich "kein Fehler"
}

Re: if abfrage

Verfasst: Mi Jul 27, 2011 9:58 pm
von Xin
Dirty Oerti hat geschrieben:Von daher müsste es, wenn man es korrekt ausschreiben will, wirklich "!= 0" heißen, allerdings ist die obige Abkürzung üblich, wenn es sich um Werte handelt, die z.B. als Fehlerabfrage dienen. Dann bedeutet ein Wert von 0 "kein Fehler", jeder andere Wert bezeichnet einen Fehler.
Der Hintergedanke ist eigentlich ein anderer, es geht eigentlich genau um das Gegenteil, nämlich wenn im Fehlerfall der Wert 0 zurückgibt.

Der Fehlerfall ist dann, dass ein Objekt nicht existiert. Darum nennt man das auch Existenzabfrage:

Code: Alles auswählen

char * memory = malloc( 1024 );

if( memory )
{
  // Speicher ist vorhanden
}

Re: if abfrage

Verfasst: Mi Jul 27, 2011 10:20 pm
von Dirty Oerti
Arg, an die Art der Verwendung hatte ich jetzt gar nicht gedacht :)
Das ist auch das ärgerliche, wenn man mehrere Bibliotheken verwendet, die da unterschiedliche Konventionen verfolgen...

Re: if abfrage

Verfasst: So Jul 31, 2011 7:49 pm
von Alchimedes
Ok, danke fuer die netten Beispiele!

Gruss