2017-11-18 8 views
-7

Ich wundere mich über einen Code, den ich im Internet gesehen habe. Ich habe versucht, Google usw., aber ich fand keine Erklärung, die meine Frage beantwortet.C++ geschweifte Klammern

Dies ist ein Beispiel, das ich codiert habe.

bool exe() 
{ 

int ret = Geterror();//if error it returns something bigger than 0 
if (ret != 0) 
    return false; 

ret = Geterror();//if error it returns something bigger than 0 
if (ret != 0) 
    return false; 

return true; 
} 

1) Meine erste Frage ist, was ist die andere unter Verwendung

if (ret != 0) 
    return false; 

und

if (ret != 0) 
{ 
    return false; 
} 

2) Ich weiß nicht, ob ich recht denken oder nicht, aber ist die Linie nach if (ret! = 0) die einzige Zeile, die ausgeführt wird, wenn ret größer als 1 ist? oder hat es etwas mit der Position oder dem Abstand zu tun? Sins ret = Geterror(); wird ausgeführt, wenn ret 0 ist.

+3

Entschuldigung. Bitte lesen Sie einige sehr grundlegende C++ Bücher oder Tutorials. Die '{...}' dienen dazu, alle Anweisungen zu gruppieren, die ausgeführt werden, wenn die 'if - Bedingung wahr' ist - wenn Sie sie auslassen, wird nur die einzige Zeile nach 'if' ausgeführt, dann –

+0

Einige lesen: http : //en.cppreference.com/w/cpp/language/statements – user4581301

+2

Tutorials können gefährlich sein. Bleiben Sie bei Büchern, bis Sie genug gelernt haben, um gute Tutorials zuverlässig von schlechten zu unterscheiden. [Die endgültige C++ Book Guide und Liste] (https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – user4581301

Antwort

1

Um Ihre erste Frage zu beantworten. Indem Sie eine if-Anweisung in einer Zeile ausführen, sind Sie sozusagen auf eine Operation beschränkt.

if(ret != 0) return false; 

Während Sie die geschweiften Klammern verwenden, deklarieren Sie einen Block mit Codeoperationen.

if(ret != 0) { 
    /* do other stuff here */ 
    return false; 
} 

Es gibt keinen praktischen Unterschied zwischen einem Einzeiler und einer Block-Anweisung.

Zu Ihrer zweiten Frage beziehen Sie sich bitte auf meine erste Codezeile.

if(ret != 0) 
    return false; 

entspricht;

if(ret != 0) return false; 

Die Erklärung mit dem Semikolon getrennt wird, um den Compiler zu sagen, dass die Anweisung beendet ist, ist der Raum zwischen trivial.

Verwandte Themen