練習 - 遞增和遞減值

已完成

您在此課程模組中將學習到的最後一個基本運算,便是如何使用將符號組合起來的特殊運算子來對值進行遞增和遞減。

遞增和遞減

您通常必須遞增和/或遞減值,特別是在撰寫與資料結構互動的迴圈邏輯或程式碼時。

+= 運算子會新增運算子右邊的值,並將其指派給運算子左邊的值。 因此,下列程式碼片段中第二行和第三行是相同的:

int value = 0;     // value is now 0.
value = value + 5; // value is now 5.
value += 5;        // value is now 10.

++ 運算子會將變數的值遞增 1。 因此,下列程式碼片段中第二行和第三行是相同的:

int value = 0;     // value is now 0.
value = value + 1; // value is now 1.
value++;           // value is now 2.

這些相同的技巧可用於減法、乘法等。 下列練習步驟將會特別示範其中幾個。

注意

+=-=*=++-- 等運算子稱為「複合指派」運算子,因為它們除了會將結果指派到變數之外,還會對某些運算進行複合處理。 += 運算子被特別稱為加法指派運算子。

撰寫程式碼以遞增和遞減值

  1. 在 .NET 編輯器中選取所有程式碼,並按刪除鍵退格鍵以刪除該程式碼。

  2. 在 .NET 編輯器中輸入下列程式碼:

    int value = 1;
    
    value = value + 1;
    Console.WriteLine("First increment: " + value);
    
    value += 1;
    Console.WriteLine("Second increment: " + value);
    
    value++;
    Console.WriteLine("Third increment: " + value);
    
    value = value - 1;
    Console.WriteLine("First decrement: " + value);
    
    value -= 1;
    Console.WriteLine("Second decrement: " + value);
    
    value--;
    Console.WriteLine("Third decrement: " + value);
    
  3. 執行程式碼。 您應該會看見下列輸出:

    First increment: 2
    Second increment: 3
    Third increment: 4
    First decrement: 3
    Second decrement: 2
    Third decrement: 1
    

注意

在「第二個遞增」中,您使用了 value += 1;。 但本來可使用任何常值 int 值 (或變數) 來遞增該數量。 「第二個遞減」的情況也是如此:value -= 1;

放置遞增和遞減運算子

遞增和遞減運算子都具有非常有趣的特性:視其位置而定,這些運算子會在擷取其值之前或之後執行運算。 換句話說,如果您在值之前使用運算子 (例如 ++value),則增量將會在擷取該值之前發生。 同樣地,value++ 會在擷取值之後對該值進行增量。

在值之前或之後使用遞增運算子

  1. 刪除先前步驟的程式碼,然後在 .NET 編輯器中輸入下列程式碼:

    int value = 1;
    value++;
    Console.WriteLine("First: " + value);
    Console.WriteLine($"Second: {value++}");
    Console.WriteLine("Third: " + value);
    Console.WriteLine("Fourth: " + (++value));
    
  2. 執行程式碼。 您應該會看見下列輸出:

    First: 2
    Second: 2
    Third: 3
    Fourth: 4
    

請注意這行程式碼︰

Console.WriteLine($"Second: {value++}");

此行有兩個步驟:

  1. 擷取變數 value 的目前值,然後在字串插補作業中使用該值。
  2. 將值遞增。

下一行程式碼會確認該值是否確實已遞增。

Console.WriteLine("Third: " + value);

相反地,請查看最後一行程式碼:

Console.WriteLine("Fourth: " + (++value));

在這裡,運算的順序會調換,因為 ++ 運算子是置於運算元 value 之前。

  1. 將值遞增。
  2. 擷取變數 value 新的遞增值,然後在字串作業中使用該值。

雖然並非絕對必要,但您已在運算式 (++value) 周圍加入括弧來提升可讀性。 有這麼多 + 運算子彼此相連,可能會使其他開發人員誤解。 這類的樣式決定是主觀的。 不過,由於您只會撰寫程式碼一次,但會閱讀很多次,因此應優先重視可讀性。

概括回顧

以下是到目前為止您學習到關於 C# 中的數學運算知識:

  • 使用 +=-=*=++-- 等複合指派運算子來執行遞增或遞減這類數學運算,然後將結果指派到原始變數中。
  • 根據遞增和遞減運算子是位於運算元之前或之後,它們的執行方式將會有所不同。