**操做符** <<左移操做符(對應的二進制序列左移一位) >>右移操做符 int a=1; int b=a<<1;(00000000000000000000000000000001) b=2(00000000000000000000000000000010) 位操做:二進制位操做 &按位與,|按位或,^按位異或 int a=3 int b=5; int c=a%b; (3:011 5:101) 十進制轉化位二進制:1111(1*2^3+1*2^2+1*2^1+1*2^0) 按位與;同是爲真是爲1 按位或:有一個爲真時爲1 按位異或:都是1,都是0時爲0;一個是1一個是0時爲1;(對應的二進制位相同爲0相異爲1) a+=10(a=a+10)複合賦值符; 單目操做符,雙目操做符,三目操做符: 單:一個操做數 雙:兩個操做數 三:三個操做數 C語言中0爲假非0爲真 int a=2; !a=0 sizeof求類型的大小(變量或者類型所佔空間大小按字節打印) sizeof(a)=sizeof (int)=sizeof a 也能夠求一個數組大小: int arr[10];十個整形元素的數組大小是40個字節 sizeof (arr);大小是40 字節 數組元素的個數:數組總大小除以每一個元素的大小; int sum=sizeof(arr)/sizeof(arr[0])(數組總的大小) \0 0 '0'區分 \0的ASCLL是0; ~按位取反: ~0的值:00000000000000000000000000000000 取反 : 11111111111111111111111111111111 只要是整數在內存中存儲的是補碼,整數中的正數原碼反碼補碼都相同 負數在內存中存儲的是補碼,打印的是原碼 例子: 原碼是直接按照正負寫出的二進制序列 反碼是符號位不變其餘位按位取反 補碼是反碼加一 -2的原碼:10000000000000000000000000000010 反碼:1111111111111111111111111111101 補碼:反碼加一:111111111111111111111111111111111111110 --操做符++操做符: int a=10; int b=a++;(後置加加) 因此得出b的值是10,a是11; int b=++a;(前置加加) 因此b值是11,a的值是11; (類型):強制轉換 int a=(int)3.14;強制轉換:3.14是double類型強制轉換成int 類型 關係操做符:>,<,==,>=,<= 0表示假一切非0表示真: &&邏輯與||邏輯或 int a=3; int b=5; int c=a&&b; c的值是1;(a和b都是真因此c的值也是真) 三目操做符: exp1?exp2:exp3:若是表達式1的值是真的話輸出表達式2的值做爲最終結果,若是表達式1的值是假的話輸出表達式3的值做爲最終結果。 逗號表達式: 下標: int arr[0]={0}; arr[4];(下標引用操做符) Add(a,b);(函數調用操做符) 常見的關鍵字:(不能和變量名衝突) int float .........c語言內置的關鍵字; auto:局部變量的前面省略了auto break,case; extern:其餘源文件的變量能夠被引用 register:寄存器關鍵字(計算機存儲數據能夠存在硬盤,內存,寄存器,高速緩存) 硬盤500g 內存4/6/8g 高速緩存 寄存器 ——————訪問速度逐漸加快,造價越高 空間逐漸減少 CPU中央處理器:從內存拿數據到CPU計算;內存訪問速度慢CPU訪問速度快; 從寄存器裏面拿速度更快,讓內存的東西放到寄存器 int main() { register int a =10;(a定義爲寄存器變量)a常用時 return 0; } int定義的變量是有符號的; unsigned int num無符號數 struct結構體關鍵字 union聯合體、 typedef:類型重定義 typedef unsigned int u int; unsigned int=u int ; 局部變量用完時銷燬; void text () a的值一直是1 { int a=1; a++; printf(「a=%d"\n,a); } 加上static: void text() a的值逐漸加一 { static int a=1; a++; printf("a=%d"\n,a); } 因此當static修飾局部變量時,生命週期延長了;出了做用域不在銷燬; 當static修飾全局變量時: 加上static時改變了做用域,不能夠在別的文件中使用; 總結:static修飾局部變量是改變了生命週期;修飾全局變量是改變了做用域,只能在當前文件中使用,出了該文件不能使用; static修飾函數時改變了函數的連接屬性,改變了做用域不能夠在別的文件中使用; 普通函數具備外部連接屬性,可是被static修飾後沒法被連接;