【C#學習筆記】【4】除了加減乘除,還有別的運算么(算數運算符與邏輯運算符)


本節的內容有點枯燥,但是很簡單,記住就行,就像小學時我們剛學加減乘除混合運算那樣。記住運算的優先性。(當然,如果你有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);

你運行上面的代碼了么?如果沒有,你可以先猜猜結果。結果如下

2015-07-17_130414

是不是和預想的結果不一樣呢?我們運行的結果,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是兩個變量。

總結

  1. 算數運算符指的是什么,有哪些常用的
  2. ++和--在變量前后的區別
  3. 什么是邏輯運算符,都有哪些
  4. 了解三元運算符,他是唯一的一個
  5. 運算符的優先性
  6. 補充的變量命名的問題


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM