2017-11-18 17 views
-7

私はインターネット上で見たコードについて疑問に思います。私はグーグルなどにしようとしましたが、私の質問に答えた説明は見つかりませんでした。C++中かっこ

これはコード化された例です。

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)私の最初の質問は、私が正しいかではないと思われる場合、私は知らない

if (ret != 0) 
    return false; 

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

2)を使用していただきまし異なりますが、行の後でもしret(= 1)が1より大きいならば、実行する唯一の行は?それはポジションやスペーシングと関係がありますか?罪ret = Geterror(); retが0の場合は実行されます。

+3

申し訳ありません。非常に基本的なC++の本やチュートリアルを読んでください。 '{...}'は、if条件が真であるときに実行されるすべてのステートメントをグループ化するように働きます。もしそれらをオフにすると、 'if'の後の1行だけが実行されます。 –

+0

読書:http ://en.cppreference.com/w/cpp/language/statements – user4581301

+2

チュートリアルは危険です。あなたが良いチュートリアルを悪いことから確実に伝えることができるほど十分に勉強するまでは、本に固執する。 [完全なC++ブックガイドとリスト](https://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list) – user4581301

答えて

1

最初の質問に答えるにはif文を1行で実行すると、言い換えれば1つの操作に制限されます。

if(ret != 0) return false; 

中括弧を使用している間は、コード操作でブロックを宣言しています。

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

1ライナーとブロックステートメントの使用には実質的な違いはありません。

2番目の質問については、私の最初のコード行を参照してください。

if(ret != 0) 
    return false; 

は、

if(ret != 0) return false; 

文は文が終了すると、コンパイラに伝えるために、セミコロンを使用することによって区切られ、間のスペースは自明です。

関連する問題