Der Martin: While in C?

Beitrag lesen

Hallo,

Ich behaupte: Nein.

ISO/IEC 9899 (+ die beiden Corr. natürlich.) ist der aktuelle C-Standard. Den kleinen Absatz, der den boolschen Datentyp _Bool definiert habe ich hier zitiert.

Standard hin oder her: Was du zitiert hast (nämlich die Definition einiger Makros), definiert noch keinen Datentyp. Das Wichtigste hast du nämlich unterschlagen:
typedef enum {
   false = 0,
   true = 1
} _Bool;
Hättest du die paar Zeilen in deinem ersten Posting abgebildet, dann wäre ich _sofort_ einverstanden gewesen. Das _ist_ ein eigener Datentyp (der aber zum Glück zuweisungskompatibel zu int ist).

Andererseits ist es natürlich etwas unfair von mir einen Standard zu zitieren, der über 200EUR in der Anschaffung kostet.

Stimmt, das ist tatsächlich unfair. ;)

Die nächstgelegene Universität mit IT-Abteilung sollte aber einen zur Einsicht rumliegen haben.

Mag sein. Aber das ist mir jetzt zuviel Aufstand.

... da beides _haargenau_ das Gleiche bedeutet, ist da nix zum optimieren. Höchstens zu versauen.

Nein, es ist nicht dasselbe. Der erste Teilausdruck im ersten Beispiel ((u>0)==true) enthält nämlich genaugenommen schon zwei Vergleichsoperationen: Vergleiche das Ergebnis des Vergleichs (u>0) mit der Konstanten true (=1). Die zweite Hälfte, nämlich der Vergleich mit der Konstanten, ist überflüssig und würde dasselbe Ergebnis hervorbringen wie schon der Teilausdruck (u>0). Deshalb wird sowas von vielen Compilern gleich wegoptimiert.

Schönes Wochenende erstmal,
Das dauert leider noch *sigh*

Ohje, mein Beileid. ;)

Martin