04 使用判斷語句

1.聲明布爾變量

和現實世界不同,程序世界的每一件事情要麼黑,要麼白;要麼對,要麼錯;要麼真,要麼假。例如,假定創建整數變量X,把值99賦給它,然後問:“x中包含值99嗎?”答案顯然是肯定的。如果問:“X小於10嗎?”答案顯然是否定的。這些正是布爾表達式的例子。布爾表達式肯定求值爲true或false。

bool變量只能容納兩個值之一:true或false。例如以下語句聲明bool變量areYouReady,將true值賦給它,並在控制檯上輸出其值:

bool areYouReady;

areYouReady = true;

Console.WriteLine(areYouReady);  //在控制檯輸出True

 

2.使用布爾操作符

2.1理解相等和關係操作符

兩個更常用的布爾操作符是相等(==)和不等(!=)操作符。這兩個二元操作符判斷一個值是否與相同類型的另一個值相等,結果是bool值。下表演示這些操作符,以int變量age爲例。

注:不要混淆相等操作符(==)和賦值操作符(=)。表達式x==y比較x和y,兩個值相等就返回true。而表達式x=y是將y的值賦給x。

與==和!=密切相關的是關係操作符,它們判斷一個值是小於還是大於同類型的另一個值。下表演示了這些操作符。

2.2理解條件邏輯操作符

邏輯與:&&

邏輯或:||

作用:將兩個布爾表達式或值合併成一個布爾結果。

注意:只有作爲操作數的兩個布爾表達式都爲true,操作符&&的結果才爲true;而只要兩個操作數任何一個爲true,操作符||的求值結果就爲true

例如:

bool flag ;

flag1 = (6>5) && (2>1);//true

flag2 = (6<5) || (2>1);//true

 

2.3短路求值

操作符&&和||都支持短路求值。即有時根本沒必要兩個操作數都求值。

總結:

&&:假定左操作數求值爲false,整個表達式的結果肯定是false,無論右操作數的值是什麼。

||:假定左側的布爾表達式求值爲true,則整個表達式的結果肯定是true。

 

2.4操作符的優先級和結合性總結

見下表:

注意:操作符&&和||的優先級不同,前者高於後者。

 

3.使用if語句做出判斷

3.1理解if語句的語法

if語句的語法如下所示(if和else是C#關鍵字)

if (booleanExpression)

    statement - 1;

else

    statement - 2;

如果booleanExpression(布爾表達式)求值爲true,就運行statement - 1;否則運行statement - 2。else關鍵字和後續的statement - 2是可選的。如果沒有else子句,而且booleanExpression爲false,那麼什麼事情都不會發生,程序繼續執行if語句之後的代碼。

 

3.2使用代碼塊分組語句

在前面的if語法中。If(booleanExpression)後面只有一個語句,關鍵字else後面也只有一個語句。但經常要在布爾表達式爲true的前提下執行兩個或更多語句。這時可將要運行的語句分組到新方法中,然後調用方法。但更簡單的做法是將語句分組到代碼塊中。代碼塊是用大括號封閉的一組語句。

下列兩個語句將seconds重置爲0,並使minutes遞增。這兩個語句被放到代碼塊中。如果seconds的值等於59,整個代碼塊都會執行:

int seconds = 0;

int minutes = 0;

…

if(seconds == 59)

{

    seconds = 0;

    minutes++;

}

else

{

    seconds++;

}

3.3嵌套if語句

舉例:

if(day == 0)

{

    dayName = "Sunday";

}

else if(day == 1)

{

    dayName = "Monday";

}

//…

else if(day == 6)

{

    dayName ="Saturday"

}

else

{

    dayName = "unknown"

}

4.使用switch語句

4.1理解switch語句的語法

語法:

switch( controllingExpression)

{

    case constantExpression:

    statements

    break;

    case constantExpression:

    statements

    break;

    …

    default:

    statements

    break;


}

例如,前面的嵌套if語句可改寫成以下switch語句:

switch(day)

{

    case 0:

    dayName = "Sunday";

    break;

    case 1:

    dayName = "Sunday";

    break;

    …

    default:

    dayName = "Unknown";

    break;

}

4.2遵循switch語句的規則

switch語句很有用,但使用須謹慎。switch語句要嚴格遵循以下規則。

(1)switch語句的控制表達式只能是某個整型(int,char,long等)或string。其它任何類型(包括float和double類型)只能用if語句。

(2)case標籤必須是常量表達式

(3)case標籤必須唯一,不允許兩個case標籤具有相同功能

(4)可以連續寫多個case標籤(中間不能插額外的語句),指定在多種情況下都運行相同的語句。如果像這樣寫,最後一個case標籤之後的代碼將適用於所有case。但假如兩個標籤之間有額外的代碼,就不能從第一個標籤貫穿(也稱直通)到第二個標籤,編譯器會報錯。例如:

switch(trumps)

{

    case Hearts:

    case Diamonds:   //允許直通——標籤之間無額外代碼

    color = "Red";   //Hearts和Diamonds兩種情況都執行相同的代碼

    break;

    case Clubs:

    color = "Black";

    case Spades:   //出錯——標籤之間有額外代碼

    color = "Black";
    
    break;

}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章