Klammern um 0 in "return (0);" - Anweisung in der Hauptfunktion - wozu dienen sie?

8

Normalerweise automatisch generierte C ++ "Haupt" -Funktion hat am Ende

%Vor%

oder

%Vor%

Aber warum gibt es Klammern in den obigen Aussagen? Ist es mit der Sprache C oder etwas verwandt?

// BEARBEITEN

Ich weiß, das ist richtig, aber jemand hat diese Klammern aus einem bestimmten Grund gesetzt. Was ist der Grund?!

    
adf88 01.07.2010, 07:26
quelle

9 Antworten

10

Sie sind nicht erforderlich (auch in c). Ich denke, einige Leute benutzen sie, um "Rückkehr" mehr wie einen Funktionsaufruf aussehen zu lassen und denken, dass es konsistenter ist.

Bearbeiten: Es ist wahrscheinlich, dass der Generator dies aus seinen eigenen Gründen tut. Es kann sicherer oder einfacher sein, so zu arbeiten.

    
sje397 01.07.2010 07:31
quelle
9
  

Aber warum gibt es oben Klammern?   Aussagen? Ist es mit C verwandt?   Sprache oder etwas?

Nein. Soweit ich das beurteilen kann, hat C nie Klammern für Return-Statements benötigt. Dies scheint schon vor dem ersten ANSI C-Standard der Fall zu sein.

Dies ist jedoch eine sehr interessante Frage, da ich diesen Stil bei bestimmten C-Programmierern gesehen habe.

Ich denke, die wahrscheinlichste Vermutung, warum dieser Stil zustande kam, ist, weil alle anderen Verzweigungsanweisungen (für, während, wenn, switch) Klammern um Ausdrücke benötigen. Die Leute wussten vielleicht nicht, dass sie die Klammern für Rücksendeanweisungen weglassen konnten oder sich dessen bewusst waren, aber sie wollten ein einheitlicheres Aussehen ihres Codes erreichen.

Der ternäre?:: Operator ist eine Art Ausnahme, da er ein Operator ist und keine Klammern um den bedingten Ausdruck benötigt. Dennoch schreiben die Leute oft auch dort Klammern, egal ob sie benötigt werden oder nicht. Manche mögen finden, dass es dazu dient, einen Ausdruck visuell in eine einzelne Einheit zu "gruppieren".

Meine zweite beste Vermutung ist, dass dieser Stil von anderen damals populären Sprachen beeinflusst wurde. Allerdings verwendeten populäre, prozedurale Alternativen wie Pascal zu dieser Zeit auch diese Syntax nicht (Pascal hatte nicht einmal Rückgabewerte im C-Sinne, sondern nur Ausgabeparameter). Wenn dies der Fall ist, ist mir keine besondere Sprache bekannt von dem dieser Stil stammt.

[Subjektiv] Ich bevorzuge Stile, die dem Code die geringste Menge an überflüssiger Dekoration abverlangen, ganz gleich, ob es um Benennungskonventionen oder um die Formatierung geht oder ob zusätzliche Klammern zu verwenden sind, wenn dies nicht notwendig ist. Ich finde, dass eine solche Dekoration eher eine Frage der persönlichen Vorliebe ist und dass man sich in eine Art des Dekorierens von Code verliebt, bedeutet, dass man eines Tages ganz andere Wege gehen muss (es sei denn, man arbeitet streng alleine) Ich beneide dich). [/ Subjektiv]

    
stinky472 01.07.2010 07:57
quelle
7

Dies ist eigentlich eine Voraussetzung für den BSD-Kernel-Quelldateistil.

man 9 style sagt:

  

Leerzeichen nach Schlüsselwörtern (wenn, während, für return , wechseln).

und

  

Werte in Rückgabeanweisungen sollten in Klammern eingeschlossen sein.

    
greg 28.04.2012 17:27
quelle
5

Da jeder gültige Ausdruck zurückgegeben werden kann, können diese Klammern bei Bedarf hinzugefügt werden. Es ist so:

%Vor%

Sie können einen Ausdruck in so vielen Klammern verschachteln, wie Sie möchten:

%Vor%     
Janick Bernet 01.07.2010 07:34
quelle
5

Das ändert sich mit der Verwendung von decltype(auto) in C ++ 14, um den Rückgabetyp abzuleiten. Wenn Klammern verwendet werden, wird der zurückgegebene Typ als Referenz abgeleitet:

%Vor%     
marcinj 21.04.2015 08:38
quelle
2

Es gibt einen dummen Grund, die Rückkehr wie einen Funktionsaufruf aussehen zu lassen.

Es gibt einen klügeren Grund: Wenn der Code generiert wird, "arbeiten" Code-Generatoren oft "auf Nummer sicher", indem sie Klammern um Ausdrücke setzen, damit sie sich niemals Gedanken darüber machen müssen, welche Priorität sie haben.

    
Mike Dunlavey 26.07.2010 13:08
quelle
2

Diese sind nicht erforderlich. Vielleicht kommen sie aus der Tendenz, mehr Klammern zu weniger Klammern vorzuziehen beim Schreiben von Makros .

Da Sie automatisch generierten Code erwähnen, könnte es vorkommen, dass der Code zum Generieren von Makros durch die Wiederverwendung von Code zum Generieren von Makros oder durch eine Person geschrieben wurde, die dachte, dass mehr Klammern nicht schaden, aber weniger Klammern tödlich sein können / p>     

sharptooth 01.07.2010 07:39
quelle
1

Nur meine alberne Spekulation:

%Vor%     
rwong 01.07.2010 15:19
quelle
0

Ein Grund, warum ich das sehen kann:

%Vor%

ist, dass es das Konzept ausdrückt, dass ERROR_SUCCESS undurchsichtig ist. Wir alle wissen, dass es 0L ist, aber wir sollten nicht haben .

Das ist ein ziemlich schwacher Grund.

Ein anderer ist, dass es ästhetisch ansprechend ist, Klammern für Konsistenz zu verwenden, ein weiterer schwacher Grund.

Mit anderen Worten, ich benutze es nicht selbst, aber würde nicht ausflippen, wenn jemand anderes es tun würde. :)

    
Ryan Ginstrom 01.07.2010 08:09
quelle

Tags und Links