本節的內容有點枯燥,但是很簡單,記住就行,就像小學時我們剛學加減乘除混合運算那樣。記住運算的優先性。(當然,如果你有C語言或其他基礎,可以跳過,但是我不建議你跳過)
算數運算符
什么是算術運算符呢?當然就是做數學算數的啊,比如上節用到的加減乘除。下面介紹一些常用的運算符(+-*/我就不說了)。
取余數運算符%
%可以當作運算符用,其含義是取余數,也叫求模運算。例子如下:
int a=5; int b=3; int c=a%b; //即5被3整除求出余數,結果當然是2了 Console.WriteLine(c); //運行結果為2
偷懶運算符+=,-=,*=,/=,%=
這些運算符長得有點奇葩,但是含義很好理解,我先寫個例子:
int a = 5; a += 2; Console.WriteLine(a); a -= 2; Console.WriteLine(a); a *= 2; Console.WriteLine(a); a /= 2; Console.WriteLine(a); a %= 2; Console.WriteLine(a);
如果我在這里告訴你,a+=2相當於是a=a+2的話,結果也就是7,那么其他的你能猜到么?
我想你猜到了,這也是我為什么稱這類運算符為偷懶運算符的原因,他可以簡化很多語句的寫法。當然,你不知道這些運算符不會影響你做其他的,因為,他只是簡寫。
暈暈的運算符++,--
其實,++和--理解起來一點都不難,只是他們在某些情況下會令你十分暈。
先來說一下其含義吧,++相當於+=1,也就是自身增加1,--就是自減1嘍。例如下面的程序:
int a=0; a++; //即a=a+1;也是a+=1; Console.WriteLine(a); //運行結果是1
上面的例子中,我把++寫在了變量的后面。讀到這里,是不是讀出些畫外音,難道++還可以寫在前面?你說對了。見下面的例子:
int a=0; ++a; Console.WriteLine(a); //運行結果為1
看到這里,是不是感覺郁悶呢,兩種寫法並沒有什么區別么,結果都相同。那我下面再寫一個例子:
int a = 0; int b; int c = 0; int d; b = a++; d = ++c; Console.WriteLine(a); Console.WriteLine(b); Console.WriteLine(c); Console.WriteLine(d);
你運行上面的代碼了么?如果沒有,你可以先猜猜結果。結果如下
是不是和預想的結果不一樣呢?我們運行的結果,a,b,c,d分別是1,0,1,1 。為什么會出現上面的情況?這就是我說的會讓人暈的運算符。下面我詳細解釋一下。
如果++和--運算符在變量的前面,那么,變量會先進行自增自減,然后再參與整個的運算。如果出現在變量的后面,那么變量會先進行運算,在進行自增或者自減,結合上面的例子分析一下。
b=a++;這一句,由於自增運算符出現在了變量a的后面,所以,變量a先參與運算,也就是b=a這樣的賦值運算,此時的a=0,然后a才自增1 。也就出現了結果中的a=1,b=0;
d=++c;這一句,自增運算符出現在了變量前面,所以,變量先進行了自增也就是c=1,然后又賦值給d,所以c和d都等於1 。
你還在暈么?自己輸入代碼試試。算數運算符我就介紹這么多。
邏輯運算符(關系運算符)
高中數學學過簡單邏輯運算吧,在集合的那一部分。簡易邏輯也就是與或非了。
先說個前文提到的,你還記得是什么嗎?相等運算符==
==相等運算符
前面介紹過了,==會判斷左邊的是否等於右邊,如果相等,結果是true,如果不等,結果是fale,示例如下。
bool b; b=3==2; Console.WriteLine(b); b=3==3; Console.WriteLine(b); //運行結果第一個為false,第二個為true
為什么用bool類型變量存放結果呢?思考一下,存放真假的變量類型是什么?
> ,< ,>=,<=,!=運算符
有人說,前兩個我見過,大於和小於,那么后三個是什么呢?那就是大於等於,小於等於,不等於咯。因為我們在鍵盤上不容易輸入≤,≥,≠這三個符號。至於示例程序,我就省略了,和上一個一樣,換一下符號就OK了。
&&,||,!運算符
以上三個分別為邏輯且,邏輯或,邏輯非,他們是用來連接兩個bool類型的值,並且給出最終運算值,其運算關系如下表:
| 運算符 |
左 |
右 |
結果 |
備注 |
| && |
true |
true |
true |
全真即真 |
| false |
false |
false |
有假即假 |
|
| false |
true |
false |
||
| true |
false |
false |
||
| || |
false |
false |
false |
全假即假 |
| true |
true |
true |
有真即真 |
|
| false |
true |
true |
||
| true |
false |
true |
||
| ! |
- |
true |
false |
真變假 |
| - |
false |
true |
假變真 |
上面的表叫做真值表,下面舉個簡單的例子:
bool b; int x = 2; int y = 3; int z = 2; b = x > y && x >= z; Console.WriteLine(b); b = x > y || x >= z; Console.WriteLine(b); b = ! (x > y); Console.WriteLine(b);
猜一下運行結果,並且自己運行程序驗證一下吧!
三元運算符 ?:
這個運算符長得很奇葩,又是問號又是冒號的,下面我先寫個例子,再說說這個干什么的:
int a = 0; int b = 1; int max = a > b ? a : b; int min = a < b ? a : b; Console.WriteLine(max); Console.WriteLine(min); //運行結果,第一個1,第二個0
是不是看出些眉目,我分別找出了a和b中的最大值和最小值。那么這個三元運算符是干什么的呢?
問號前是一個邏輯表達式(就是帶邏輯運算符的式子了),如果這個邏輯表達式的結果是true,那么程序會跳到?和:之間執行,如果問號前為false,那么直接跳到:后面執行。下面解釋一下上面程序中取最大值的算法。
先是a>b一個邏輯判斷,如果真,也就是a大於b了,那么,就執行?后面的a,也就是max=a,如果a>b是假的,那么最大值就是b,也就是:后面的,故max=b。
剛接觸這個有點難以理解,我們只需要記住有這么個運算符就行了。在以后的例子中會再提到。
運算符的優先性(混合運算的優先法則)
在下表中列出的優先級從高到低(比如乘除的優先級高於加減)
| 運算符 | 說明 |
| x++,x-- | 后自增自減 |
| +x,-x,!x,++x,--x | 正號,負號,非,前自增,前自減 |
| *,/,% | 乘法,除法,取余 |
| +,- | 相加,相減 |
| >,<,>=,<= | 大於,小於,大於等於,小於等於 |
| ==,!= | 相等,不相等 |
| &&,||,?: | 邏輯且,邏輯或,三元運算符 |
| = | 賦值運算符 |
| +=,-=,*=,/=,%= | 復合賦值運算 |
如果出現同級的運算符,則按照從左到右的順序計算。
當然,你可以用()來改變運算順序,就像我們數學里的括號。需要注意的是,小括號外面還可以使用小括號,而不是中括號或者大括號。
在實際運用中,如果不記得運算順序,我們可以添加括號,來保證我們的運算結果和我們的預想結果相同。
變量命名方式(上節的補充)
這部分本來應該在前文寫,由於怕內容過多,寫在了今天的內容里。
如果你學過C語言你可能有這樣的體會,聲明變量時,一會兒,a,一會兒又是b的,等一會兒回頭看,a是啥玩意兒來着?所以給變量起個好的名字,有助於我們理解程序,也能統一代碼風格。下面講兩種常見的命名方式。(如果你有更好的方法或者不采用一下方法,那我也沒招)
Pascal命名方式(帕斯卡)
在這種方式中,我們將變量中的每個單詞的首字母大寫,如UserName(用戶名),StudentNumber(學號),是不是很直觀的就能知道變量的含義呢?當然,我們的變量不采用這種命名方式,這種方式用在以后學的類,接口,方法,屬性中用。
Camel命名方式(駱駝)
這種方式和上一種的區別就是首單詞的首字母小寫,如userName,studentNumber。這種方式是我們給變量命名的常用方式。
合法的變量名稱
不是任意字符都可以作為變量名稱的。只能是字母或者下划線(_)開頭,后面可以接任意的字母和數字還有下划線,至於長度,你自己一個變量名稱寫上幾百個字母能記得住么?還有就是不要用關鍵字做變量名稱,例如我們前面學的int,double這些,以后還會學到一些。要注意,C#會嚴格區分大小寫,UserName和userName是兩個變量。
總結
- 算數運算符指的是什么,有哪些常用的
- ++和--在變量前后的區別
- 什么是邏輯運算符,都有哪些
- 了解三元運算符,他是唯一的一個
- 運算符的優先性
- 補充的變量命名的問題

