天天看點

《C++遊戲程式設計入門(第4版)》——2.2 使用if語句include

本節書摘來自異步社群出版社《c++遊戲程式設計入門(第4版)》一書中的第2章,第2.2節,作者:【美】michael dawson(道森),更多章節内容可以通路雲栖社群“異步社群”公衆号檢視。

c++遊戲程式設計入門(第4版)

現在将真和假的概念用于實踐。if語句用來驗證表達式真假,如果為真則執行某些代碼。下面給出if語句的簡單形式:

// score rater

// demonstrates the if statement

using namespace std;

int main()

{

   if (true)

   {

     cout << "this is always displayed.nn";

   }

   if (false)

     cout << "this is never displayed.nn";

   int score = 1000;

   if (score)

     cout << "at least you didn’t score zero.nn";

   if (score >= 250)

     cout << "you scored 250 or more. decent.nn";

   if (score >= 500)

     cout << "you scored 500 or more. nice.nn";

     if (score >= 1000)

     {

        cout << "you scored 1000 or more. impressive!n";

     }

   return 0;

}<code>`</code>

第一個if語句驗證為true。因為true的值總為真,是以程式顯示了消息this is always displayed.。

第二個if語句驗證為false。因為false的值不為真,是以程式不顯示消息this is never displayed.。

if (false);

   cout &lt;&lt; "this is never displayed.nn";

}

(false)後面的分号形成了與if語句關聯的空語句。上面的代碼等同于:

if (false)

    ; // an empty statement, which does nothing

這裡用空白字元作為空語句,它不會改變代碼的意義。現在問題應該很清晰。if語句檢測到false值,跳過下一條語句(空語句),然後代碼順利地運作到if後面的語句,顯示this is never displayed.。

要謹防這種錯誤。這是很容易犯的錯誤,而且因為它并不是非法的,是以不會産生編譯錯誤。

任意值都可以解釋成true或false。任意非零值都解釋成true,而0則解釋成false。下面的if語句驗證了這一點:

   }<code>`</code>

因為score值為1000,是以執行if語句的代碼塊,顯示消息說玩家得分還算可以。如果score小于250,程式将跳過代碼塊,繼續執行後面的語句。

陷阱

 等于關系運算符是==(連續兩個等于号),不要與指派運算符=(一個等于号)混淆。雖然不使用關系運算符而使用指派運算符并不是非法的,但結果可能出乎意料。看看這段代碼:

因為score比500大,是以程式進入語句塊,并顯示消息you scored 500 or more. nice.。然後在内部的if語句中,程式比較score與1000。因為score大于等于1000,程式顯示消息you scored 1000 or more. impressive!

提示

  if語句可以任意多層地進行嵌套。然而,如果嵌套得太深,代碼将很難讀懂,一般來說,我們将嵌套限制在幾層以内。

繼續閱讀