c語言操作符詳解

2021-09-18 04:32:00 字數 3690 閱讀 3009

c語言操作符有以下幾大類:

1.算術操作符

2.關係操作符

3.邏輯操作符

4.位操作符

5.賦值操作符

6.單目運算子

7.逗號運算子

8.條件運算子

9.下標訪問,函式呼叫,結構體成員訪問操作符

常見運算子就是 加 減 乘 除 取模 取餘(取模),加減很簡單了,和數學中的使用沒什麼區別。這裡的重點主要在/ 和 %操作符了,這兩個操作符涉及到很多c語言型別的問題。下來給大家介紹一下:

**該操作符在運算結果為整型資料的運算上似乎沒什麼問題,但很多初學者在計算浮點數時總是達不到自己預期的結果,因為使用 / 運算子想得到浮點數資料時必須滿足運算元為浮點數,然後操作結果儲存在浮點數型別的變數中。舉例:

int

main()

其中第四行**,ret = 1.0 / 2.0;平時很多人會寫成ret=1.0/2;結果同樣正確,上面不是說運算元必須是浮點數嗎,這裡2是整型啊,原因在於此處編譯器進行了隱式型別轉換,將 2 轉換為double型別,這樣 / 兩邊的運算元都是浮點型了。這個大家要心裡清楚。(隱式型別轉換和強制型別轉換及資料截斷,整形提公升會在博主的另一篇部落格中講到);

另外需要注意的是 / 右邊的除數不能為0,否則編譯器會報錯。

**該操作符對處理的資料型別比 / 還要嚴格,它操作的資料必須是整型且不能對0取模;可以應用於取數字或者通過隨機數產生乙個內的範圍數;

舉例:

int

main()

關係操作符均為雙目運算子,其運算結果只有兩種結果,即真(1)或者假(0)。這裡注意不能用數學的思維來用這些操作符,一些容易犯的錯誤,如判斷乙個變數a是否在一定範圍內。就不能寫成10int

main()

else

return0;

}執行結果:

還有需要注意的一點就是== 和 =

易出現手誤寫錯,造成不容易發現的bug!

首先區別於邏輯與和邏輯或操作符&& 和 ||,明確這是兩種操作符!這幾種操作符在使用中有一些規律,&&運算子中有乙個為假,結果一定為假,且前面表示式為假時不再執行後面的表示式; 而||運算子結果有乙個為真,其結果一定為真,且當前面條件為真時,後面的條件就不再執行和判斷真假。舉例:

int

main()

這道例題就可以是我們充分理解這兩種操作符。

還有乙個邏輯取反操作符!,這個很好理解了,就是給乙個表示式邏輯取反。

int

main()

printf

("\n");

return0;

}

除此之外還有異或操作符,該操作符有個特性就是乙個數將另乙個數異或兩次之後得到的數還是原來的數。即就是異或同乙個數兩次相當於沒異或。

舉例:題目描述:一組資料中只有乙個數字出現了一次。其他所有數字都是成對出現的。

請找出這個數字。(使用位運算)

int

find_num

(int

*p,int size)

return ret;

}int

main()

;int n =

sizeof

(arr)

/sizeof

(arr[0]

);int num=

find_num

(arr, n)

;printf

("%d\n"

, num)

;return0;

}

int

main()

輸出結果為4,5,8初學者容易在第二行**中產生困惑,其實質是等價於

b=b+1;

c=a+b;

a=a+1;

逗號運算子就是用逗號隔開幾個表示式,並且運算的結果為最後乙個表示式的值。

舉例:

int

main()

上面的逗號運算子那一行相當於:執行了

a有一種if語句判別表示式為真或者為假時,都執行乙個賦值語句且賦值給同乙個變數。如:

int a=

12, b=

14, max;

if(a

else

c語言提供條件運算子來專門處理這類問題,上面的if語句就可以寫成a

條件運算子由兩個符號組成,要求有三個操作物件,稱為三目操作符,它也是c語言中唯一乙個三目操作符。

下標訪問操作符

在c語言中只用於陣列,但是由於指標和陣列有極多的相似之處,指標在c語言中也可以通過下標訪問。舉例:

int

main()

;int

*p = arr;

printf

("%d %d\n"

, arr[2]

,3[arr]);

printf

("%d %d\n"

, p[2]

,3[p])

;return0;

}

函式呼叫操作符可以接受任意多個引數,第乙個引數就是函式名,其餘引數就是傳遞給函式的引數,並由呼叫函式來決定其餘引數的型別和個數。

訪問結構體成員操作符 . ->

結構體成員的變數可通過 . 訪問結構體成員。

使用方fa:變數名.結構體成員名

結構體指標可以通過 -> 指向結構體成員

使用方法:結構體指標->結構體成員

舉例:

struct student

;int

main()

;struct student* p =

&student;

printf

("%d %s %s %d\n"

, student.num, student.name, p->***, p->age)

;return0;

}

執行結果:

到這裡,c語言操作符基本就給大家羅列完了,但是看完這些操作符你並不一定能正確使用它們,因為在使用過程中你還不能完全掌握它們的優先順序和結合性

兩個相鄰的操作符先執行哪個?取決於他們的優先順序。如果兩者的優先順序相同,取決於他們的結合性。

那麼問題出現了,優先順序那麼多,我需要都背下來嗎?能背下來當然更好嘍,不過記不下來也沒關係,在使用中加上括號就行了,不管它哪個優先順序高,都得按照我的邏輯來,這樣就簡單多了。

C語言操作符詳解

操作符的存在使c語言更加的靈活,實現更多的功能。但是,操作符的一些繁瑣的使用方式,規則卻常常讓我們這些初學者頭疼。本文將操作符進行總結,彙總一起分享。一,操作符的分類 操作符分為以下幾種 算術操作符,位操作符,賦值操作符,單目操作符,關係操作符,邏輯操作符,條件操作符,逗號操作符,下標引用,函式呼叫...

C語言操作符詳解

我們日常所見到的任何事物都是有個種各樣細小的零件所組成的,比如我們現在用的 cpu 它的內部是由許許多多的二極體 三極體等基本元器件再加上連線各種元器件的導線所組成的。不同的組合方式也就形成了不同的功能,比如alu 控制器 暫存器 儲存器等等。當然我們的c語言也不例外,它也是由最基本的運算所組成的,...

c語言操作符詳解

一 算術操作符 算術操作符共有5個,分別為加法操作符 減法操作符 乘法操作符 除法操作符 和求餘操作符 它們均為雙目操作符,即操作符前後都需要乙個運算元。printf sum d a b printf diff d a b printf mul d a b printf rate d distanc...