C語言一共有34種運算符,以下:面試
運算符分類:函數
1.按照功能劃分:設計
(1)算術運算符3d
(2)關係運算符blog
(關係運算的結果成立就爲「真」==1, 不成立則爲「假」==0)內存
(3)邏輯運算符程序設計
(&按位與 若是兩個相應的二進制都爲1, 則該位的結果值爲1, 不然位0;class
| 按位或者兩個相應的二進制位 只要有一個爲1, 該位的結果值爲1;變量
^ 按位 異或 若參加運算的兩個二進制位值相同 則爲0, 不然爲1;數據類型
~ 取反 是一元運算符, 用來對一個二進制數按位取反,即將0變爲1,將1 變爲 0;
<< 左移用來將一個數的各二進制位所有左移N位,右補0;
>> 右移將一個數的各二進制位右移N位,移到右端的低位被捨棄,對於無符號數,高位補0)
基本運算
(1)運算符根據參與運算的操做數的個數,分爲:
(2)優先級:oc中,運算符的運算優先級共分爲15級。1級最高,15級最低。在表達式中,優先級較高的先於優先級較低的進行運算。而在一個運算量兩側的運算符優先級相同時,則按運算符的 結合性所規定的結合方向處理。(注:只須要記住( )優先級最高便可)
(3)c語言中,各類運算符的結合性分爲兩種,左結合性(自左向右)和右結合性(自右向左)
* 整數除於整數,求出來的結果依然是整數
* 浮點型賦值給整型會損失小數部分
* %兩側必須都爲整數
* 利用%求出來的餘數是正數仍是負數,由%左邊的被除數決定,被除數是正數,餘數就是正數,反之則反
(4)算術運算的注意點
(5)賦值運算符
/= 除後賦值 變量/=表達式 如:a/=3;即a=a/3
*= 乘後賦值 變量*=表達式 如:a*=3;即a=a*3
%= 取模後賦值 變量%=表達式 如:a%=3;即a=a%3
+= 加後賦值 變量+=表達式 如:a+=3;即a=a+3
-= 減後賦值 變量-=表達式 如:a-=3;即a=a-3
(6)自增運算符
在程序設計中,常常遇到「i=i+1」和「i=i-1」這兩種極爲經常使用的操做。C語言爲這種操做供了兩個更爲簡潔的運算符,即++和--,分別叫作自增運算符和自減運算符。它們是單目運算符,是從右向左結合的算術運算符。
在程序設計中,常常遇到「i=i+1」和「i=i-1」這兩種極爲經常使用的操做。C語言爲這種操做供了兩個更爲簡潔的運算符,即++和--,分別叫作自增運算符和自減運算符。它們是單目運算符,是從右向左結合的算術運算符。
int b; int a = 10; b = ++a;//若是++在前表明先自增再參與其它運算 // a = a + 1; b = a; // a = 11 b = 11
後綴表達式:x++, x--;先用x的當前值做爲表達式的值,再進行自增自減1運算。即「先用後變」,也就是先用變量的值參與運算,變量的值再進行自增自減變化。
int b; int a = 10; b = a++;//若是++在後表明先參與其它運算再自增 // b = a; a = a + 1; // a = 11 b = 10
通常形式形式:表達式1,表達式2,… …,表達式n; 例如:a=a+1,b=3*4;
b = (a=4, ++a, a * 7); // 1.先執行第一個表達式, 將4賦值給a // 2.再執行第二個表達式, 讓a自增變爲5 // 3.再執行第三個表達式, 5 * 7 // 4.最後將最後一個表達式的值做爲"逗號表達式的值"返回賦值給b, 因此b等於35
程序中使用逗號表達式,一般是要分別求逗號表達式內各表達式的值,並不必定要求整個逗號表表達式的值。
(8)sizeof的運算符
(9)關係運算符
例如4>3>2:先算4>3,條件成立,結果爲1。再與2比較,即1>2,條件不成立,結果爲0。 所以4>3>2的結果爲0。
例如2==3>1:先算3>1,條件成立,結果爲1。再計算2==1,條件不成立,結果爲0。 因 此2==3>1的結果爲0。
例如3+4>8-2:先計算3+4,結果爲7。再計算8-2,結果爲6。最後計算7>6,條件成立, 結果爲1。所以3+4>8-2的結果爲1。
(10)類型轉換問題:
(1)自動轉換遵循如下規則: *相同數據類型的值才能進行運算(好比加法運算),並且運算結果依然是同一種數據類 型。系統會自動對佔用內存較少的類型作一個「自動類型提高」的操做 *若參與運算量的類型不一樣,則先轉換成同一類型,而後進行運算。 *轉換按數據長度增長的方向進行,以保證精度不下降。如int型和long型運算時,先把int量轉 成long型後再進行運算。 *全部的浮點運算都是以雙精度進行的,即便僅含float單精度量運算的表達式,也要先轉換成double型,再做運算。 *char型和short型參與運算時,必須先轉換成int型。 *在賦值運算中,賦值號兩邊量的數據類型不一樣時,賦值號右邊量的類型將轉換爲左邊量的類型。若是右邊量的數據類型長度比左邊長時,將丟失一部分數據,這樣會下降精度,丟失的部分 按四捨五入向前舍入。
強制類型轉換是經過類型轉換運算來實現的
其通常形式爲:(類型說明符) (表達式)
強制類型轉換注意點:
(1)將大範圍的數據賦值給小範圍變量時,系統會自動作一個強制類型轉換的操做,這樣容 易丟失精度 (2)類型說明符和表達式都必須加括號(單個變量能夠不加括號),如把(int)(x+y)寫成(int)x+y則了把x轉換成int型以後再與y相加了。 (3)不管是強制轉換或是自動轉換,都只是爲了本次運算的須要而對變量的數據長度進行的臨時性轉換,而不改變數聽說明時對該變量定義的類型。
參考文章:http://www.jianshu.com/p/141e6af7395e