運算子描述&
按位與操作,按二進位制位進行"與"運算。運算規則:
0&0=0;
0&1=0;
1&0=0;
1&1=1;
運算子描述|假設a 的值為 60(0011 1100),變數 b 的值為 13(0000 1101),則:
(a & b) 將得到 12,即為 0000 1100
按位或運算子,按二進位制位進行"或"運算。運算規則:
0|0=0;
0|1=1;
1|0=1;
1|1=1;
(a | b) 將得到 61,即為 0011 1101
運算子描述^
異或運算子,按二進位制位進行"異或"運算。運算規則:
0^0=0;
0^1=1;
1^0=1;
1^1=0;
(a ^ b) 將得到 49,即為 0011 0001
運算子描述~
取反運算子,按二進位制位進行"取反"運算。運算規則:
~1=0;
~0=1;
(~a) 將得到 -61,即為 1100 0011,乙個有符號二進位制數的補碼形式。
運算子
描述<<
二進位制左移運算子。將乙個運算物件的各二進位制位全部左移若干位(左邊的二進位制位丟棄,右邊補0)。
a << 2 將得到 240,即為 1111 0000
運算子
描述》二進位制右移運算子。將乙個數的各二進位制位全部右移若干位,正數左補0,負數左補1,右邊丟棄。
a >> 2 將得到 15,即為 0000 1111
所有未加 static 字首的全域性變數(這裡的全域性變數指在原始檔的開頭處,不包含在原始檔的任何函式內)和函式都具有全域性可見性,其它的原始檔也能訪問。static宣告的函式和變數不能在另乙個檔案中引用,也就是說,如果加了 static,就會對其它原始檔隱藏,無法進行呼叫。
static的第二個作用是保持變數內容的持久。儲存在靜態資料區的變數會在程式剛開始執行時就完成初始化,也是唯一的一次初始化。相較於全域性變數,static可以控制變數的可見範圍。
第三是他的預設初始化值為0
extern主要用來宣告全域性變數,和定義不同,聲與定義不同,它只是宣告出了變數名字,而沒有為其分配空間。
注:在程式中乙個變數可以宣告多次,但只能定義一次。extern
int i;
//宣告變數
int i;
//定義變數
如果在宣告過程中為其新增了初始值,則其會被當成定義,如:extern int i = 5;
如果要在乙個c檔案中使用另外乙個c檔案中已經定義的全域性變數,就必須使用extern關鍵字。
關鍵字const可以限制某個變數為唯讀,一般的用法為const int num = 10;
其中const int num
與int const num
等價
對於被限制為唯讀的變數,如果嘗試修改他的值,程式將會報錯:
如果不想讓編譯器察覺到上面到對 const 的操作,我們可以在 const 前面加上 volatile 關鍵字。const
int num =10;
num =11;
//編譯錯誤
volatile 關鍵字跟 const 對應相反,是易變的,容易改變的意思。所以不會被編譯器優化,編譯器也就不會改變對 num 變數的操作。
嵌入式C學習第一次任務
位運算 用於對整數型別 int,char,long 等 變數的二進位制形式的 某一位 bit 或者若干位進行操作。按位與 按位或 按位異或 按位取反 左移 左邊消失,右邊補0 右移 右邊消失,左邊補符號位 位運算的運算元是整數型別或字元型.1.將參與運算的兩運算元各對應的二進位制位進行與 操作,只有...
嵌入式C學習第一次任務
數學中的並且,遇0則清0 數學中的或者,1或0為1 1 0 或1 0 為1 0 按位異或,如果兩個相應的二進位制位值不同則為1,否則為0。取反,1變0 0變1 右移,是將乙個二進位制位的運算元按指定移動的位數向右移動,移出位被丟棄,左邊移出的空位或者一律補0或者補符號位 左移,是將乙個二進位制位的運...
第一次嵌入式C 學習
資料 乘法 2 二進位制下的移位 例如 m 1 m 2 m n m 2 n 4 0 0 1 0 0 8 0 1 0 0 0 第一位與符號變數有關 除法 m n m 2 n int a a n unsigned int a a n a 0 0 遮蔽,遮蔽低八位 a 1 1 取出,取出高八位 清0器 a...