2011-07-24 44 views
3

我正在學習C++,我遇到了2種不同類型的代碼,我想知道它們有什麼不同。if()的區別?

是否有任何區別:

if(z==true) 
    { 
    cout << "Yes"; 
    } 
    else 
    { 
    cout << "NO"; 
    } 

和:

if(z==true) 
    cout << "YES"; 
else 
    cout << "NO"; 
+2

如果您有興趣,還有一段代碼與您呈現的代碼沒有區別。它是'if(z)cout <<「YES」; else cout <<「NO」;你不應該把bools與true或false比較,他們已經是bool了。 – unkulunkulu

+3

另外,你可以(也應該)省略'== true'部分。查看關於[爲了真正做出重大貢獻?](http://programmers.stackexchange.com/questions/12807/make-a-big-deal-out-of-true)上的答案,瞭解各種原因這不好。 – delnan

+0

你從哪些書或教師那裏學習C++沒有向你解釋這個? –

回答

6

沒有,有這兩個之間沒有什麼區別。 {}僅在有多條語句時才需要,但有些人認爲,如果稍後添加更多語句,始終擁有它們可以降低奇怪錯誤的風險。

+0

所以它只是你可以寫它,但是你想以這兩種方式之一..再多一些:)? 並感謝你:) – ibanezz

+0

你可以使用你想要的那些。在編程中,通常有幾種方法可以做同樣的事情。有時候,儘管它有效,但在某些方面做是不好的做法,因爲在代碼更新後,它有混淆或微妙錯誤的風險。 –

2

此代碼的行爲方式相同。所以這只是一個風格問題。

許多程序員更喜歡第一個,因爲它更健壯。以不符合預期的方式更改第二個很容易。如果有多個語句(或沒有語句),則{}是必需的。因此,如果認爲某個部分是有條件/無條件的,那麼對第二個部分的更改很容易導致代碼。特別是在壓痕時馬虎。

我個人認爲如果你有一個好的IDE可以自動格式化代碼,風險很小。

2

完全沒有區別,第一個例子有一個代碼塊而不是單個語句,它只是一個包含單個語句的塊。前者通常被認爲是更安全的寫作。

8

技術上不行,但一個是IMO更好的做法。如果您省略大括號,則只執行下一行,而不是執行大括號內的所有內容。您可以看到代碼的快速更改如何引發問題。

說你有

if(z==true) 
    cout << "YES"; 
else 
    x = 47; 

,你將它修改爲

else 
    x = 47; 
    y = 99; 

Y = 99;無條件執行。最好避免這些問題,並使用大括號。

+2

當大括號中的語句不是宏時,也看到了問題:如果在稍後的某個點上它變成了多行宏,那麼if語句突然表現不同(並且你失去了一天的生活調試!)。總之:總是使用大括號。 –

相關問題