一、關于typedef與#define的相似之處
例如:typedef int COUNT;
#define COUNT int
作用:都是用COUNT代表int,但事實上,二者是不同的,#define是在預編譯時處理的,只能作簡單的字串替換,而typedef是在編譯時處理的,并不是作簡單的字串替換,而是宣告一個型別,
二、有關整型的資料型別
| 資料型別 | 含義 |
| int p; | 定義整型變數p |
| int *p; | p為指向整型資料的指標變數 |
| int p[n]; | 定義整型陣列p,它有n個元素 |
| int *p[n]; | 定義指標陣列p,它由n個指向整型資料的指標元素組成 |
| int (*p)[n]; | p為指向含n個元素的一維陣列的指標變數 |
| int p(); | p為帶回整型函式值的函式 |
| int *p(); | p為帶回一個指標的函式,該指標指向整型資料 |
| int (*p)(); | p為指向函式的指標,該函式回傳一個整型值 |
| int **p; | p是一個指標變數,它指向一個指向整型資料的指標變數 |
三、有關二維陣列運算式的含義
| 運算式 | 含義 |
| a | 二維陣列名,指向一維陣列a[0],即0行首地址 |
| a[0]、*(a+0)、*a | 0行0列元素地址 |
| a+1、&a[1] | 1行首地址 |
| a[1]、*(a+1)+2、&a[1][2] | 1行2列元素a[1][2]的地址 |
| *(a[1]+2)、*(*(a+1)+2)、a[1][2] | 1行2列元素a[1][2]的值 |
四、變數命名的規則
(1)編譯系統將大寫和小寫字母認為是兩個不同的字符
(2)建議變數名的長度最好不要超過8個字符
(3)在選擇變數名和其他識別符號時,應做到“見名知意”,即選有含義的英文單詞(或其縮寫)作識別符號
(4)要求對所有用到的變數作強制定義,就是“先定義,后使用”
五、C語言運算子優先級
|
優先級 |
運算子 |
名稱或含義 |
使用形式 |
結合方向 |
說明 |
|
1 |
[] |
陣列下標 |
陣列名[常量運算式] |
左到右 |
-- |
|
() |
圓括號 |
(運算式)/函式名(形參表) |
-- |
||
|
. |
成員選擇(物件) |
物件.成員名 |
-- |
||
|
-> |
成員選擇(指標) |
物件指標->成員名 |
-- |
||
|
2 |
- |
負號運算子 |
-運算式 |
右到左 |
單目運算子 |
|
~ |
按位取反運算子 |
~運算式 |
|||
|
++ |
自增運算子 |
++變數名/變數名++ |
|||
|
-- |
自減運算子 |
--變數名/變數名-- |
|||
|
* |
取值運算子 |
*指標變數 |
|||
|
& |
取地址運算子 |
&變數名 |
|||
|
! |
邏輯非運算子 |
!運算式 |
|||
|
(型別) |
強制型別轉換 |
(資料型別)運算式 |
-- |
||
|
sizeof |
長度運算子 |
sizeof(運算式) |
-- |
||
|
3 |
/ |
除 |
運算式/運算式 |
左到右 |
雙目運算子 |
|
* |
乘 |
運算式*運算式 |
|||
|
% |
余數(取模) |
整型運算式%整型運算式 |
|||
|
4 |
+ |
加 |
運算式+運算式 |
左到右 |
雙目運算子 |
|
- |
減 |
運算式-運算式 |
|||
|
5 |
<< |
左移 |
變數<<運算式 |
左到右 |
雙目運算子 |
|
>> |
右移 |
變數>>運算式 |
|||
|
6 |
> |
大于 |
運算式>運算式 |
左到右 |
雙目運算子 |
|
>= |
大于等于 |
運算式>=運算式 |
|||
|
< |
小于 |
運算式<運算式 |
|||
|
<= |
小于等于 |
運算式<=運算式 |
|||
|
7 |
== |
等于 |
運算式==運算式 |
左到右 |
雙目運算子 |
|
!= |
不等于 |
運算式!= 運算式 |
|||
|
8 |
& |
按位與 |
運算式&運算式 |
左到右 |
雙目運算子 |
|
9 |
^ |
按位異或 |
運算式^運算式 |
左到右 |
雙目運算子 |
|
10 |
| |
按位或 |
運算式|運算式 |
左到右 |
雙目運算子 |
|
11 |
&& |
邏輯與 |
運算式&&運算式 |
左到右 |
雙目運算子 |
|
12 |
|| |
邏輯或 |
運算式||運算式 |
左到右 |
雙目運算子 |
|
13 |
?: |
條件運算子 |
運算式1? 運算式2: 運算式3 |
右到左 |
三目運算子 |
|
14 |
= |
賦值運算子 |
變數=運算式 |
右到左 |
-- |
|
/= |
除后賦值 |
變數/=運算式 |
-- |
||
|
*= |
乘后賦值 |
變數*=運算式 |
-- |
||
|
%= |
取模后賦值 |
變數%=運算式 |
-- |
||
|
+= |
加后賦值 |
變數+=運算式 |
-- |
||
|
-= |
減后賦值 |
變數-=運算式 |
-- |
||
|
<<= |
左移后賦值 |
變數<<=運算式 |
-- |
||
|
>>= |
右移后賦值 |
變數>>=運算式 |
-- |
||
|
&= |
按位與后賦值 |
變數&=運算式 |
-- |
||
|
^= |
按位異或后賦值 |
變數^=運算式 |
-- |
||
|
|= |
按位或后賦值 |
變數|=運算式 |
-- |
||
|
15 |
, |
逗號運算子 |
運算式,運算式,… |
左到右 |
-- |
注意:
同一優先級的運算子,運算次序由結合方向所決定,
簡單記就是:! > 算術運算子 > 關系運算子 > && > || > 賦值運算子
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/17579.html
標籤:其他
