有5個簡單的數學運算子,其中2個有二元和一元兩種形式.下表列出了這些運算子,並用一個樣本來說明它們的用法,以及使用簡單的數實值型別(整數和浮點數)時它們的結果
運算子 類別 樣本運算式 結 果
+ 二元 var1 = var2 + var3; var1的值是var2與var3的和
- 二元 var1 = var2-var3; var1的值是從var2減去var3所得的值
* 二元 var1 = var2 * var3; var1的值是var2與var3的乘積
/ 二元 var1 = var2 / var3; var1是var2除以var3所得的值
% 二元 var1 = var2 % var3; var1是var2除以var3所得的餘數
+ 一元 var1 = +var2; var1的值等於var2的值
- 一元 var1 =-var2; var1的值等於var2的值除乘以-1
小提示: +(一元)運算子有點古怪,因為它對結果沒有影響。它不會把值變成正的:如果var2是-1,則+var2仍是-1。但是,這是一個普遍認可的運算子,所以也把它包含進來。這個運算子最有用的方面是,可以定製它的操作,本書在後面探討運算子的重載時會介紹它。
小天:上面的樣本都假設var使用簡單的數實值型別,這些類型在前面的樣本中都練習N次了,所以不用給樣本也比較清楚了。不過我想如果把兩個布爾值加在一起,會得到什麼結果?
老田:如果對bool變數使用+(或其它數學運算子),編譯器會報告出錯。另外char變數的相加會有點讓人摸不著頭腦。因為,char變數實際上儲存的是數字,所以把兩個char變數加在一起也會得到一個數字(其類型為int)。這是一個隱式轉換的樣本。
二元運算子+在用於字串類型變數時也是有意義的。如下所示。
運算子 類 別 樣本運算式 結 果
+ 二元 ar1 = var2 + var3; var1的值是儲存在var2和var3中的字串的串連值
其實,字串相加之前的樣本也有做到,不過不多,下面再看兩種形式的。
string str1 = "如果自卑對人生沒有協助,";
string str2 = "那就試試自信吧!";
string str3,str4;
//第一種是兩個字串變數相加
str3 = str1 + str2;
//第二種是一個字串變數和一個字串相加,雙引號中間的被認為是字串
str4 = str3 + "自信的第一步,就是從潛意識鼓勵自己、認同自己。";
Console.WriteLine(str3);
Console.WriteLine(str4);
Console.Read();
小天:鬱悶,除了+號有用外,其它數學運算子不能用於字串的處理,害我浪費時間做了半天舉一反三的練習。
老田:你這話不對,最起碼在你舉一反三的練習過程中知道了其它的數學運算子不能用於字串處理,另外,你敲代碼的速度也更快了。
接下來介紹另外兩個運算子:遞增和遞減運算子,它們都是一元運算子,可以以兩種方式使用:放在運算元的前面或後面。簡單運算式的結果如下表所示。
運算子 類 別 樣本運算式 結 果
++ 一元 var1 = ++var2; var1的值是var2 + 1,var2遞增1
++ 一元 var1 = var2++; var1的值是var2,var2遞增1
-- 一元 var1=--var2; var1的值是var2 -- 1,var2 遞減1
-- 一元 var1 = var2-- ; var1的值是var2,var2 遞減1
這些運算子改變儲存在運算元中的值。
● ++總是使運算元加1
● -- 總是使運算元減1
var1中儲存的結果有區別,其原因是運算子的位置決定了它什麼時候發揮作用。把運算子放在運算元的前面,則運算元是在進行任何其它計算前受到運算子的影響,而把運算子放在運算元的後面,則運算元是在完成運算式的計算後受到運算子的影響。
這有益於另一個樣本,考慮下面的代碼:
int var1, var2, var3, var4, var5 = 5, var6 = 5, var7 = 5, var8 = 5;
var1 = ++var5;
var2 = var6++;
var3 = --var7;
var4 = var8--;
Console.WriteLine("var1={0},var2={1},var3={2},var4={3}"
, var1, var2, var3, var4);
//綜合執行個體,想下為什麼等於這個結果
int v1=2, v2=3, v3;
v3 = v1++ * --v2;
Console.WriteLine("v3={0}",v3);
上面兩個例題的執行結果2-26
圖2-26
小天:多新鮮啊,最後的值等於4,這是因為v1後面的++是要在當前運算式之後才生效,那麼換句話說,在這個運算式中v1後面的++其實是可以忽略的。而v2前面的--則是在當前運算式中會生效的,所以效果是v1=2,v2=3-1,還是等於2,於是最終是v1的2乘以v2的2,於是當然等於4了。
這類運算式有許多用途,特別適合於在迴圈中使用,這將在後面的流程式控制制章節講解。
本文為天轟穿原著,轉載請註明出處及作者!