第一級:結合方向自左向右,
() :只用於陣列,作用:1.定義陣列,先定義後使用;2.通過陣列下標訪問陣列元素。int a=10;int arr[10];
. :
自定義資料型別 ,通過結構體的變數訪問內部成員;
struct student
; struct student stu1=;
stu1.age=23;
-> :結構體的指標變數,訪問它的成員使用;
int *p=&a;
struct student *ps=&stu1;
ps->age=32;
第二級:結合方向自右向左,單目運算子
!:邏輯非運算子
~:按位取反;二進位制的每一位都取反
++:自增
int a=10;
int b=++a;//前置++;先加後賦值;a=11,b=11;
int b=a++;//後置++;先賦值後加;b=10,a=11;
--:自減
int a=10;
int b=--a;//前置--;先減後賦值;a=9,b=9;
int b=a--;//後置--;先賦值後減;a=10,b=9;
(型別):(強制)型別轉換運算子
float a=10/4.; //2->2.0
float b=10.0/4;
float c=(float)10/4;
強制型別轉換 10->10.0
float d=float(10/4);
10/4是2,2->2.0
*:指標
sizeof:長度運算子
占用的位元組數
sizeof(char)=1;
sizeof(short)=2;
sizeof(int)=4;
sizeof(long)=4;
sizeof(long long)=8;
sizeof( 1 )=4;//數字預設為整型
sizeof( 12.0 )=8;//小數預設位double型
第**:自左向右 雙目運算子
* :乘法運算子
/ :除法運算子
整除 是整數/整數,結果為整數 10/4=2;小數點後面的都去掉,成為去尾,正負數皆可
還有一種說法叫「向0取整」,其實跟「去尾」原理是一樣的。
%:求餘運算子
求餘就是求餘數 只能用於整數
5%3=2
(-5)%3=-2
(-5)%(-3)=-2
5%(-3)=2
有個規律,餘數的符號和被除數的符號一致,如果記不住這個規律,也可以直接算
第四級:加(+)減(-)運算子
第五級:移位運算子,雙目,自左向右,只用於整數,不能用於浮點數
<< :左移運算子
按位左移:例如10<<1 意思就是10的二進位制按位左移一位
10->1
0000
1010 -> 0001 0100
向左移動了一位,左邊的0沒有了,右邊補0;移位後變成20
10->2
0000
1010-> 0010 1000
變成了40
擴大了4倍
可以看出,按位左移了幾位,數值就會變成2的幾次方倍,所以說,擴大乙個數的2 的幾次方的倍數,最快的方法就是左移幾位。
>> :右移運算子
原理同上,縮小倍數的。
可以模擬十進位制的左右移
下面的6~12 都是雙目運算子,自左向右結合
6.關係運算子:<(小於)
< =(小於等於)
>(大於)
>= (大於等於)
7.==(等於) !=(不等於)
8.按位與運算子:&
都為1,才為1;
9.按位異或運算子:^
不一樣的才為1(相同為0,不同為1)
10.按位 或:|
有乙個為1,就為1
11.邏輯與:&&
表示式1&&表示式2 都為真,才為真
特別注意!若表示式1為假,表示式2不會被計算
12.邏輯或: ||
表示式1 || 表示式2
有乙個為真,就為真,特別注意!若表示式1為真,表示式2不會被計算
13.條件運算子
? :
唯一的乙個三目運算子,結合性自右向左
表示式1 ?表示式2 :表示式3
它的意思就是表示式1如果為真,則執行表示式2,否則執行表示式3
可以替換簡單的if-else語句。
14。賦值運算子:= ,+= ,-=,*=,/=
,%= ,>>= ,<<= ,&=,^= ,!=
自右向左
15.逗號運算子:也叫順序求值運算子,自左向右結合
表示式1,表示式2,……,表示式n ;
這個表示式的結果應該是表示式n
1,2,3,4,7=7;
逗號表示式:從左往右依次計算,以最後乙個表示式(表示式n)的結果為最終結果。
大致歸納優先順序的順序:
初等運算子——單目運算子——算數運算子——關係運算子——邏輯運算子——條件運算子——賦值運算子——逗號運算子
記不住的話,可以加上括號(),它的優先順序是最高的。
特別注意【】的優先順序比 * 高。
運算子結合性
在標準c語言的文件裡,對操作符的結合性並沒有做出非常清楚的解釋。乙個滿分的回答是 它是仲裁者,在幾個操作符具有相同的優先順序時決定先執行哪乙個。每個操作符擁有某一級別的優先順序,同時也擁有左結合性或右結合性。優先順序決定乙個不含括號的表示式中運算元之間的 緊密 程度。例如,在表示式a b c中,乘法...
運算子優先順序和結合性
所謂優先順序就是當乙個表示式中有多個運算子時,先計算誰,後計算誰。這個其實我們在小學學算術的時候就學過,如1 4 2。但是c語言中的運算子已經遠不止四則運算中的加減乘除了,還有其他很多運算子。當它們出現在同乙個表示式中時先計算誰後計算誰呢?所以本節還是有必要講一下的。最後我還會將所有運算子展示出來,...
運算子優先順序和結合性
優先順序 運算子含義 運算物件個數 結合順序1 初等運算子 自左至右 下標運算子 指向結構體成員運算子 結構體成員運算子2!單目運算子 1 單目運算子 自右至左 負號 指標運算子 sizeof 型別 型別轉換運算子3 乘法算數運算子 2 雙目運算子 自左至右 4 2 雙目運算子 自左至右 5 2 雙...