Bei Computern nehme ich gewöhnlicherweise eine 0 für falsch und eine 1 für wahr.
wieso ist es daher in C üblich am Programmende mit return 0 eine 0 für "keine Fehler" zurückzugeben?
wäre nicht return 1 besser?
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von ogd am
Bei Computern nehme ich gewöhnlicherweise eine 0 für falsch und eine 1 für wahr.
wieso ist es daher in C üblich am Programmende mit return 0 eine 0 für "keine Fehler" zurückzugeben?
wäre nicht return 1 besser?
Ohne es wirklich genau zu wissen, aber ich denke, das liegt daran, dass es ja durchaus verschiedene Fehlercodes geben kann. Daher kannst Du die 0 als eine Art "Kein Fehler" betrachten.
Was ZeHa sagt.
...außerdem gibt ein sauberes C-Programm natürlich nicht 0 zurück, sondern EXIT_SUCCESS.
EDIT: Neben verschiedenen Fehlercodes gibt es auch noch die Möglichkeit der Bitmuster. Als Beispiel hier mal ein Auszug aus der manpage zum fsck-Kommando:
Zitat von man fsckThe exit code returned by fsck is the sum of the following conditions:
- 0: No errors
- 1: Filesystem errors corrected
- 2: System should be rebooted
- 4: Filesystem errors left uncorrected
- 8: Operational error
- 16: Usage or syntax error
- 32: Fsck canceled by user request
- 128: Shared-library error
The exit code returned when multiple filesystems are checked is the bit-wise OR of the exit codes for each filesystem that is checked.
Wie Zeha schrieb - im Erfolgsfall interessiert mich nicht weiter, was für ein Status vorliegt. Im Fehlerfall ist's schon interessant, je nach aufgetretenem Fehler unterschiedliche Fehlerbehandlungen durchzuführen...
Keine Ahnung woher ist es habe, aber für mich stand die Null als Rückgabewert immer für 'keine Fehler'.
Das mache ich schon seit Jahren (oder Jahrzehnten) so.
Es gibt übrigens auch Programmiersprachen, wo das anders ist - bei (Turbo) Pascal entspricht false der 0 und true der 1
Bei Computern nehme ich gewöhnlicherweise eine 0 für falsch und eine 1 für wahr.
wieso ist es daher in C üblich am Programmende mit return 0 eine 0 für "keine Fehler" zurückzugeben?
wäre nicht return 1 besser?
beantwortest Du das nicht selbst?
0 = False = None = keine Fehler?
Besser wäre aus meiner Sicht eine Erklärung a la "das ist bei C Konvention". C kennt weder true noch false, von daher kann eine Funktion das auch nicht zurückliefern...
C kennt weder true noch false
Um noch ein bisschen klugzusch...: das ist nicht ganz richtig, da boole'sche Operationen (z.B. der == Operator) durchaus einen Wert zurückliefern und 0 in diesem Fall gleichbedeutend mit False ist.
Besser wäre aus meiner Sicht eine Erklärung a la "das ist bei C Konvention".
Ist das denn entscheidend? Ich dachte den Quatsch mit Exit_Success bzw _Failure gäbs gerade deshalb weil die Hostsysteme das Rückgabeformat vorgeben, nicht die Programmiersprache bzw. das damit geschriebene Programm.
Ich dachte an die Schlüsselwörter true und false sowie den Datentyp boolean. Die werden in C über #define nachgebastelt (gibt dann auch Methoden die BOOL zurückliefern... dreimal darf man raten, was die bei erfolgreicher Durchführung zurückliefern). Kurzum: wenn man von anderen Programmiersprachen aus C betrachtet ist der Rückgabewert 0 für eine erfolgreiche Durchführung zumindest ungewöhnlich. Auch wenn es gute Gründe dafür gibt.
C kennt weder true noch false
Na ja, stdbool.h gehört schon etwas länger zum C-Standard.
Danke für den Hinweis - bin dadurch auf _Bool gestossen. Sowas hatte ich beim alten C (z. B. VC6) vermisst.
In VB6 sind die Werte 0 = False, -1 = True.
Das hat mit der Invertierung des Bitmusters zu tun:
False = 00000000'00000000 (16 Bit signed int16)
True = NOT False = 11111111'11111111 = -1
In VB.NET ist es dann "modernisiert" worden mit False = 0, True = 1, um auch mit der .NET CLR zu harmonisieren und damit auch anderen .NET Sprachen.
Unter Windows sind die Exit-Codes noch ein Relikt aus der DOS-Zeit, wo man Exit-Code = Fehlercode = ERRORLEVEL betrachten kann und so z.B. in einer Batchdatei einen Exit-Code auswerten kann:
oder einen bestimmten Exit-Code abfragen:
In VB6 gibt es ohne Hacks aber keine brauchbaren Exit-Codes. Man kann es aber mit Win32-APIs einbauen.
Win32 & co... ja, da gibt es Routinen, die im Erfolgsfall 0 zurückliefern und ein Wert ungleich 0 für Fehler steht. Und dann gibt es jene, die im Erfolgsfall TRUE und im Fehlerfall FALSE zurückliefern und der Fehlercode über GetLastError abgerufen wird.
In VB6 sind die Werte 0 = False, -1 = True.
Um den Kreis zu schliessen: M$ hat das aus Kompatibilitätsgründen zu Basic V2 beibehalten