運算子的優先順序
《程式編譯流程與 gcc 編譯器》
《c 語言程式設計 — 基本語法》
《c 語言程式設計 — 基本資料型別》
《c 語言程式設計 — 變數與常量》
運算子是一種告訴編譯器執行特定的算數或邏輯操作的符號。
note:求餘運算子的運算元只可以為整型。
note:自增運算子和自減運算子的運算元只可以為變數,不能為常量或表示式。
假設變數 a 的值為 10,變數 b 的值為 20,則:
note:比較表示式的運算結果值是 0(假)或 1(真)。c 語言沒有 bool 型別,用整數值 0 來表示假,用非 0 值來表示真 。c++ 為提高程式的可讀性引入了 bool 型別,bool 型別變數的值為 true 或 false。c++ 為了保持對 c 語言的相容性,false 用 0 來表示,ture 用 1 來表示。
邏輯表示式:用邏輯運算子將操作物件連線起來的式子,稱為邏輯表示式。
假設變數 a 的值為 1,變數 b 的值為 0,則:
note:當邏輯表示式中同時出現多種運算子時,按下列順序進行運算:算術運算→關係運算→邏輯運算。
位運算子作用於位,並逐位執行操作。&(全一則一)、|(有一則一)、^(異或)、~(取反)的真值表如下所示:
假設如果 a = 60,且 b = 13,現在以二進位制格式表示,它們如下所示:
a = 0011 1100
b = 0000 1101
賦值運算表示式:用賦值運算子將變數和表示式連線起來的式子,稱為賦值運算表示式。
多重賦值:v1=v2=...=vn=
表示式。執行時,從右到左把表示式的值按照 vn、… 、v2、v1 的順序依次賦給每個變數。
賦值運算子可分為:
逗號運算子:又稱為順序求值運算子,功能是將表示式連線起來,從左向右求解各個表示式,逗號運算的值為最後的表示式 n 的值。
note:逗號運算子的優先順序最低,引入逗號表示式的目的是為了簡化程式書寫。
// c/c++ 按順序計算表示式 1,表示式 2, .....,表示式 n 的值
// 整個逗號表示式的值為表示式 n 的值
表示式1
, 表示式2
, 表示式3,.
....
., 表示式n
sizeof 運算子:求某一資料型別或某一變數在記憶體空間中所佔空間的位元組數。
sizeof
(變數名或資料型別)
e.g.
int
main()
包括 &(位址運算子)、*(指標運算子)、?:(三元運算子)。
執行:
# ./main
a: 4
b: 2
c: 8
*ptr: 4
注意:區域性變數 ptr 被定義為指標型別,所以 ptr 可以儲存變數的 「指標」,即變數的值在記憶體中的入口位址。ptr = &a;
儲存了區域性變數 a 的位址,再通過指標運算子 * 將區域性變數 a 的值取出來。
將變數/函式的記憶體位址賦值給指標變數。
通過指標運算子將指標變數儲存的記憶體位址所指向的值取出來。
較高優先順序的運算子出現在**的上面,具有較低優先順序的運算子出現在**的下面。在表示式中,較高優先順序的運算子會優先被計算。
C語言程式設計 位運算子(異或運算子)
下面顯示了 c 語言支援的位運算子。假設變數 a 的值為 60,變數 b 的值為 13,則 1 按位與運算子,按二進位制位 與 運算。運算規則 0 0 0 0 1 0 1 0 0 1 1 1 eg a b 將得到 12,即為 0000 1100 2 按位或運算子,按二進位制位進行 或 運算。運算規則...
C語言 運算子與 運算子
我們平時使用帶參巨集時,字串中的巨集引數是沒有被替換的。例如 輸出結果為 然而,我們期望輸出的結果是 5 20 2513 14 27 這該怎麼做呢?其實,c語言允許在字串中包含巨集引數。在類函式巨集 帶參巨集 中,號作為乙個預處理運算子,可以把記號轉換成字串。例如,如果a是乙個巨集形參,那麼 a就是...
C語言 運算子和 運算子
變數 代表 取變數的位址 變數 代表 指標型的變數 取址運算子 用來取得其運算元的位址。如果運算元 x 的型別為 t,則表示式 x 的型別是 t 型別指標 指向 t 的指標 取址運算子的運算元必須是在記憶體中可定址到的位址。換句話說,該運算子只能用於函式或物件 例如左值 而不可以用於位欄位,以及那些...