練習 - 遞增和遞減值
您在此課程模組中將學習到的最後一個基本運算,便是如何使用將符號組合起來的特殊運算子來對值進行遞增和遞減。
遞增和遞減
您通常必須遞增和/或遞減值,特別是在撰寫與資料結構互動的迴圈邏輯或程式碼時。
+=
運算子會新增運算子右邊的值,並將其指派給運算子左邊的值。 因此,下列程式碼片段中第二行和第三行是相同的:
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.
這些相同的技巧可用於減法、乘法等。 下列練習步驟將會特別示範其中幾個。
注意
+=
、-=
、*=
、++
與 --
等運算子稱為「複合指派」運算子,因為它們除了會將結果指派到變數之外,還會對某些運算進行複合處理。 +=
運算子被特別稱為加法指派運算子。
撰寫程式碼以遞增和遞減值
在 .NET 編輯器中選取所有程式碼,並按刪除鍵或退格鍵以刪除該程式碼。
在 .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);
執行程式碼。 您應該會看見下列輸出:
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++
會在擷取值之後對該值進行增量。
在值之前或之後使用遞增運算子
刪除先前步驟的程式碼,然後在 .NET 編輯器中輸入下列程式碼:
int value = 1; value++; Console.WriteLine("First: " + value); Console.WriteLine($"Second: {value++}"); Console.WriteLine("Third: " + value); Console.WriteLine("Fourth: " + (++value));
執行程式碼。 您應該會看見下列輸出:
First: 2 Second: 2 Third: 3 Fourth: 4
請注意這行程式碼︰
Console.WriteLine($"Second: {value++}");
此行有兩個步驟:
- 擷取變數
value
的目前值,然後在字串插補作業中使用該值。 - 將值遞增。
下一行程式碼會確認該值是否確實已遞增。
Console.WriteLine("Third: " + value);
相反地,請查看最後一行程式碼:
Console.WriteLine("Fourth: " + (++value));
在這裡,運算的順序會調換,因為 ++
運算子是置於運算元 value
之前。
- 將值遞增。
- 擷取變數
value
新的遞增值,然後在字串作業中使用該值。
雖然並非絕對必要,但您已在運算式 (++value)
周圍加入括弧來提升可讀性。 有這麼多 +
運算子彼此相連,可能會使其他開發人員誤解。 這類的樣式決定是主觀的。 不過,由於您只會撰寫程式碼一次,但會閱讀很多次,因此應優先重視可讀性。
概括回顧
以下是到目前為止您學習到關於 C# 中的數學運算知識:
- 使用
+=
、-=
、*=
、++
與--
等複合指派運算子來執行遞增或遞減這類數學運算,然後將結果指派到原始變數中。 - 根據遞增和遞減運算子是位於運算元之前或之後,它們的執行方式將會有所不同。