Menü
Avatar von Bananensoftware
  • Bananensoftware

mehr als 1000 Beiträge seit 24.02.2017

Re: Ich schätze SQLite zwar sehr, aber mir würde nicht im Traum einfallen

El Hefe schrieb am 17.12.2018 20:12:

die kleine Himbeere schrieb am 17.12.2018 17:06:

int main() { return printf("Hello, world!\n") < 0 || fflush(stdout) ? EXIT_FAILURE : EXIT_SUCCESS; }

Kannst Du mich bitte erleuchten, was hier genau passiert? Die Ausgabe von "printf" wird kleiner 0, wenn bspw. der Stream zu ist. Warum muss man dann ein "flush" hinterher schicken? Und was könnte passieren, wenn man hier den Return-Value ignoriert?

Der fflush wird nur ausgeführt, wenn der printf fehlerfrei lief. Im Falle eines Fehlers von printf ist der Teilausdruck vor dem || wahr, die Berechnung des Teilausdrucks rechts vom || ist daher überflüssig und wird nicht ausgeführt, daher in dem Fall kein fflush.

|| Logisches ODER; liefert das Ergebnis Wahr (1), wenn mindestens einer der beiden Ausdrücke bei der Auswertung einen Wert ungleich Null ergibt, andernfalls ist das Ergebnis Falsch (0). Wenn der erste Ausdruck Wahr ergibt, wird der zweite nicht ausgewertet.

Das Posting wurde vom Benutzer editiert (18.12.2018 07:48).

Bewerten
- +
Anzeige