Bogosort (ohne Methoden, nur Main Funktion)

Status
Dieses Thema wurde gelöst! Zur Lösung gehen…

ComFreek

Mod | @comfreek
Moderator
Das geht übrigens idiomatischer mit "while (1)". Edit: Ich habe gerade gesehen, dass @cwriter dir diesen Code oben vorgeschlagen hat ;) Er hat es dir wahrscheinlich einfacher machen wollen, um folgende Erklärung sich zu sparen: Vergleiche werden in C zu einem int ausgewertet.* Wahre Vergleiche werden zu einer Zahl, die nicht 0 ist ausgewertet, klassischerweise 1. Also sowas wie "1 == 1" wird zu 1 ausgewertet, während "42 == 84" zu "0" ausgewertet wird. Die Schleife wiederholt solange, wie das Argument ungleich 0 ist.

*) Ob das wirklich ein int ist oder ein anderer numerischer Datentyp, darüber bin ich mir gerade nicht sicher. Also meinen Absatz oben nicht für den C-Standard halten ;) Aber sonst sollte er komplett richtig sein.
 

cwriter

Erfahrenes Mitglied
Er hat es dir wahrscheinlich einfacher machen wollen, um folgende Erklärung sich zu sparen
Hat er :)

Ob das wirklich ein int ist oder ein anderer numerischer Datentyp, darüber bin ich mir gerade nicht sicher.
Es ist ein int, du hast schon recht.
Comparison operators - cppreference.com

while() selbst frisst aber einen beliebigen Skalartyp und beendet, wenn der Ausdruck auf 0 evaluiert - man könnte also auch while(42) schreiben :)
http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf Seite 135 (147 nach PDF-Reader) beschreibt das so:
The controlling expression of an iteration statement shall have scalar type.
[...]
An iteration statement causes a statement called the loop body to be executed repeatedly until the controlling expression compares equal to 0.


Gruss
cwriter
 
Zuletzt bearbeitet:
Status
Dieses Thema wurde gelöst! Zur Lösung gehen…