VC#2005快速入門之使用if語句

字號:

如果想根據(jù)一個(gè)布爾表達(dá)式的結(jié)果選擇執(zhí)行兩個(gè)不同的代碼塊,就可以使用if語句。
    理解if語句的語法
    if語句的語法格式如下(if和else是關(guān)鍵字):
    if ( booleanExpression )
    statement-1;
    else
    statement-2;
    如果booleanExpression求值為true,就運(yùn)行 statement-1;否則就運(yùn)行statement-2。else關(guān)鍵字和后續(xù)的statement-2是可有可無的。如果沒有else子句,那么在booleanExpression為false的前提下,什么都不會發(fā)生。
    例如,以下if語句用于遞增一個(gè)秒表的秒針(暫時(shí)忽略分鐘)。如果seconds的值是59,就重置為0;否則就使用操作符++來遞增:
    int seconds;
    ...
    if (seconds == 59)
    seconds = 0;
    else
    seconds++;
    只使用布爾表達(dá)式!
    if語句中的表達(dá)式必須放在一對圓括號中。除此之外,表達(dá)式必須是布爾表達(dá)式。在另一些語言中(尤其是C和C++),還可以使用一個(gè)整數(shù)表達(dá)式,編譯器能自動將整數(shù)值轉(zhuǎn)換成true(非零值)或false(零值)。C#不允許這樣做。如果寫這樣的一個(gè)表達(dá)式,編譯器會報(bào)錯(cuò)。
    假如在if語句中不慎寫了一個(gè)賦值表達(dá)式,而不是執(zhí)行一個(gè)相等性測試,C#編譯器也能識別你的錯(cuò)誤。例如:
    int seconds;
    ...
    if (seconds = 59) // 編譯時(shí)錯(cuò)誤
    ...
    if (seconds == 59) // 正確
    不慎而寫成賦值表達(dá)式,是C和C++程序容易出現(xiàn)bug的另一個(gè)原因。在C和C++中,會將所賦的值(59)悄悄地轉(zhuǎn)換成一個(gè)布爾值(任何非零的值都會被視為true),造成每次都必定執(zhí)行if語句之后的代碼。
    最后,可以將一個(gè)布爾變量作為表達(dá)式使用,如下例所示:
    bool inWord;
    ...
    if (inWord == true) // 可以,但不常用
    ...
    if (inWord) // 更好
    使用塊來分組語句
    有時(shí),需要在一個(gè)布爾表達(dá)式為true的前提下運(yùn)行兩個(gè)或者更多的語句??梢詫⒁\(yùn)行的語句分組到一個(gè)新方法中,然后調(diào)用那個(gè)方法。但是,一個(gè)更簡單的做法是將語句分組到一個(gè)塊(block)中。塊是指用一對大括號來封閉的一系列語句。在下例中,兩個(gè)語句將seconds變量重置為零,并使minutes變量遞增。我們用一個(gè)塊來分組這兩個(gè)語句。假如seconds的值等于59,就執(zhí)行該塊:
    int seconds = 0;
    int minutes = 0;
    ...
    if (seconds == 59)
    {
    seconds = 0;
    minutes++;
    }
    else
    seconds++;
    重要提示 假如遺漏大括號,將造成兩個(gè)嚴(yán)重后果。首先,C#編譯器只將第一個(gè)語句(seconds=0)與if語句關(guān)聯(lián)起來,下一個(gè)語句(minutes++)將不再成為if語句的一部分。其次,當(dāng)編譯器遇到else關(guān)鍵字時(shí),不會將它與前一個(gè)if語句關(guān)聯(lián)起來,所以會報(bào)告語法錯(cuò)誤。