




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、文檔編碼 : CK2V3O6O6A10 HB6A6K2G1R6 ZU4P8M6L8P22.1 C 語言的數據類型 運算機軟考程序員備考程序設計學問點 2 數據類型包含兩方面的內容:數據的表示和對數據加工的操作;數據的全部可能表示構成數據類型的 值的集合;數據全部合理的操作構成數據類型的操作集合; 在 C 語言中,把整型,實型和字符型稱為基本數據類型,又稱整型和實型為數值型;為了描述更復雜 的數據結構, C 語言仍有構造類型,指針類型,放舉類型和空類型;構造類型是指由如干個相關的數據組 合在一起形成的一種復雜數據類型; 1.整型 整型數據按其儲備在內存中的二進位信息的最高位是當作數值信息位仍是當
2、作數據的符號位,將整型 數據分成帶符號整型和無符號整型兩種;每種整型又按所需的字節個數的多少分成三種;所以整型共有 6種: 帶符號整型 int ,帶符號短整型 short int,帶符號長整型 long int ,或 long ,無符號整型 unsigned int, 無符號短整型 unsigned short int 以無符號長整型 unsigned long; 2.實型 實型數據有表示范疇和精度兩個不同的特點,為了適應數的范疇和精度的不同要求,實型數據分三種 類型:單精度型 也稱浮點型 float ,雙精度型 double,長雙精度型 long double ; 3.構造類型 構造類型是指
3、由如干個相關的數據組合在一起形成的一種復雜數據類型,構造數據類型的成分數據可 以是基本數據類型的, 也可以是別的構造類型的; 按構造方式和構造要求區分, 構造類型主要有數組類型, 結構類型和共用類型; 數組類型是由相同類型的數據組成 ; 結構類型可以由不同類型的數據組成 ; 當不同數據 類型不會同時使用時,以節省內存,讓不同數據占用同一區域,這就是共用類型; 4.指針類型 指針類型是取程序對象 如變量 在內存中占居的地址為值的一種特別的數據類型; 5.枚舉類型 當變量只取很少幾種可能的值,并分別用標識符對值命名時,這種變量的數據類型可用枚舉類型來表 示;如變量表示一個星期中的某一天,就可用校舉
4、類型描述該變量的類型,并以星期見的英文名對日期命 名,對應的變量取某日的星期名稱為其值; 類型 用保留字 VOid 表示的數據類型有兩種完全相反的意思,或表示沒有數據 沒有結果,沒有形式參數 , 或表示某種任意類型的數據 如又與指針結合,用 void;標記 ; void 表示空類型, void ;表示任意數據的 指針類型,程序如要使用 void;類型的數據,應當將它強制地轉換成某種詳細的指針類型; 2.2 常量 常量是指程序運行過程中其值不行轉變的數據;常量按其值的表現形式可分為如下類型:整型常量, 實型常量,字符型常量,字符串常量和指針常量; 1.整型常量 C 語言整型常量的書寫形式有三種:
5、 1十進制整數;通常整數的寫法,如 0, 123, -45 ,+25; 2八進制整數;以數字符 0 開頭并由數字符 0-7 組成的數字符序列,為八進制整數;如 0123 表示八 進制整數,其值等于十進制整數 l*8*8+2*8+3=83 ; 3十六進制整數;十六進制整數以 OX 或 OX 開頭的整數;表示十六進制數的數字將有 16 個,它們 分別是 0-9 和 A, B,C, D, E, F,其中六個英文字母也可以小寫;例如, 0 x123 表示十六進制整數,其 值等于十進制整數 1*16*16+2*16+3=291; oxabc ,其值等于 10*16*16+11+16+12=2748 ;
6、整型常量也可在整數之后接上字母 L 或 l ,特別指明它是 long 型的; 整型常量也可在整數之后接上字母 U 或 u,特別指明是不帶符號的, 即是 unsigned 型的;為指明不帶 第 1 頁,共 10 頁符號的 long 型整型常量,就需在整數之后同時加上字母 U 和 L,說明該整型常量是 unsigned long 型的; 整型數據以二進制形式存放, 要求短整型數據的字節數不能大于整型數據的字節數 ;整型數據的字節數 不能大于長整型數據的字節數;對于帶符號的整數,用二進制代碼的最左二進位作為數的符號, 1 表示負 數, 0 表示正數; 2.實型常量 C 語言實型常量的一般書寫格式是:
7、 正負號 整數部分 .小數部分 指數部分 其中,正負號可有可無,無正負號即為正實數 ;整數部分和小數部分都是十進數字符序列 ; 指數部分是 e或 E后接上正負號 正號可有可無 和十進數字符序列; 按上述格式書寫實型常量,另有兩條限制: l 整數部分和小數部分可以任選,但不行同時都沒有; 2小數點和指數部分不行以同時都沒有; ANSIC 引入兩個后綴字符,用 f 標識 float 型實型常量,用 1 或 L 標識 fong double 型實型常量,而 無后綴符的實型常量被認為是 double 型的實型常量; 要留意實型常量的有效位數, 不要以為寫上的數字都能被運算機所接受; 在大多數 C 系統
8、中,一個 float 型實型數據在內存中占用 4 個字節 32 個二進位 ,約 7 個十進位有效數字,能表示確定值最接近 0 的實數 約為 10 的 -38 次方,最大的實數約為 10 的 38 次方;例如,對于代碼 ,在大多數系統 中,實型常量 的最終兩位數字是無效的; double 型實型數據占用 8 個字節 64 個二進位 ,約 15 個十進位有效數字, 能表示確定值最接近 0 的實 數約為 10 的一 308 次方,最大的實數約為 10 的 308 次方; 3.字符常量 字符型數據用于表示一個字符值,但字符型數據的內部表示是字符的 ASCll 代碼 8 位二進位的二進制 形式 ;字符型
9、數據的類型符用 char 來標記;字符型常量的書寫方法: l 一般字符 - 用單引號括起一個字符;如 a,b,B, $; 2特別字符 - 用 字符或字符列采標記;這種標記方法有三種: 特定字符 ,標記特定把握符,如換行符用 n來標記; 1至 3個人進制數字 ,以人進數表示字符的 ASCll 代碼; X1至 2個十六進制數字符 ,以十六進制數表示字符的 ASCll 代碼; 由于字符以代碼存放,所以也可把字符值當作一個小整數;反之,一個小整數也可把它懂得為是某個 字符的代碼,把它當作一個字符; 4.字符串常量 字符串常量用來表示一個字符序列,它的書寫方法用雙引號括住字符序列;例如: ”ABC”,
10、”等;字 符串常量 “是”一個空字符串,即不含任何有效字符的字符串;字符串數據次序儲備字符串字符的 ASCll 代 碼,并在最終字符后面儲備一個 H 進制代碼全為 0 的特別字符,用來標記字符串的終止;所以字符串常量 “ 1234在”內存占 5個字節,而空字符串只占一個字節;字符串中的字符也可以是轉義字符; 5.符號常量 為了提高程序的可讀性,常量可以用以下形式命名: # define 標識符 常量 其中的標識符也稱作符號常量, 這里的常量是前面所述的某種常量, 或是程序中前面定義的符號常量; 例如: # define MAXN 100 變量 變量是程序執行時,其值答應轉變的數據對象,用來儲備
11、輸入數據,運算的中間結果和程序的最終結 果等; 第 2 頁,共 10 頁1.變量定義 變量用標識符命名,通過變量定義引入的變量名習慣用英文字母開頭, C 系統可能也會預定義一些標 記系統特性的變量, 系統定義的變量習慣用下線字符開頭; 變量的數據特性由變量定義時指定的類型確定; 如定義指定數據類型的變量 即不在指定數據類型基礎上定義新數據類型的變量,如指定類型的指針,數組 等 ,這種變量定義的句法為: 數據類型符變量名 1,變量名 2, ; 編繹系統依據變量的數據類型確定存放它的值所需要的內存字節數,變量值的內部表示形多也由其類 型確定; 2.內部變量和外部變量 變量按其定義顯現在程序中的位置
12、不同分成兩類:在函數內定義的變量稱為內 部變量,而在函數之外 函數之間 定義的變量稱為外部變量; 3.變量的儲備類型 系統按程序對運算機儲備空間使用的不同要求,將內存分成不同用途的塊,與運算 機的寄存器一起將 儲備空間分成不同類別;而 C 程序通過指定變量的儲備類說明變量的不同的使用要求,讓系統將變量支配 于不同的內存塊或寄存器;如在上述變量定義形式中,仍要指定變量的儲備類型,變量定義的形式為: 儲備類型符數據類型符變量名 1,變量名 2, ; 其中儲備類型有四種: auto自動的 , static靜態的 ,register 寄存器的 和 extem 外部的 ; 外部變量只答應被指定為靜態的,
13、或不指定其儲備類型;內部變量可以被指定為自動的或靜態的,或 寄存器的,或不指定儲備類型,如不指定儲備類型,它就是自動的; 自動變量是內部變量,在函數內或復合語句內定義,它們被支配在堆棧區; 靜態變量可以是內部變量,也可以是外部變量;靜態變量表示永久性和專用性,即在程序執行過程中 始終存在,局限于定義它的函數 內部靜態變量 或局限于定義它的程序文件中那些函數 外部靜態變量 ;靜 態變量被支配在與程序相聯的內存數據區; 寄存器變量是函數的內部變量或參數,也是一種暫時性的變量;如因函數使用特別頻繁程序期望將它 支配在寄存器,程序就可將變量指定為寄存器的,但編譯系統也可能把它當作動變量處理; 指定儲備
14、類型是外部的,實際 b 是告知編譯器,這個變量是一個外部變量,在這里要使它,而它的定 義或在別的程序文件或在后面的程序段等別的地方; 4.變量的作用域和生存期 變量的使用要留意變量的作用域 可使用范疇 和生存期 存在的時間 ;C 語言規定,內部變量的作用域 只局限于定義它的函數或復合語句;自動的內部變量是一種暫時性變量,函數被調用時支配,函數執行結 束時釋放;而靜態變量在程序執行前支配,直至程序終止才釋放;由于靜態的內部變量在函數終止時,依 舊保持儲備,函數上一次調用時留在內部靜態變量中的結果能被下一次調用時連續使用;外部變量也在程 序啟動前支配,直至程序執行終止釋放;一般的外部變量能供應別的
15、源程序文件中的函數使用 要對它作外 部說明 ;靜態的外部變量只能供定義它的源程序中的全部函數專用; 由于外部變量能供整個程序使用, 所以 外部量不能重名; 5.變量定義初始化 變量定義是對變量的儲備空間提出一種要求,儲備空間支配后,變量的初值通常是不拔的;但程序可 以要求系統在為變量支配儲備空間同時為變量設定初值,這就是變量定義初始化;在變量的定義形式中, 在變量名之后接上 “=初值表達式 ”,該初值表達式的值就作為該變量的初值; C 語言另有商定,對于靜態變 量和外部變量,如定義它們時未指定初值,系統給它們設置成全部二進位都是 0 的值;以下是各種變量定 義的例子: l 定義整型,并對其初始
16、化; Short minInt =100; int i= l ,j= 2 , k=3; 第 3 頁,共 10 頁long p=-1L ,q=1234567890L; unsigned usi= 254u; unsigned long up= 4294967295UL; 2定義字符型變量,并對其初始化; char ch= A; 3定義實型 浮點型,雙精度型 變量,并對其初始化; float f=1.23456f; double d=1.2345678op87654; 運算符 每個運算符都代表對運算對象的某種運算,都有自已特定的運算規章,規定運算對象的個數,運算對 象數據類型,以及運算結果的數據類
17、型; C 語言仍規定運算符有不同的優先級和結合性;運算符的優先級 指表達式求值時,按運算符的優先級由高到低的次序運算;如 “先乘除后加減 ”;運算符的結合性是指運算 符要求它的運算對象對它的結合方向;結合性確定了在相同優先級運算符連續顯現的情形下運算對象與運 算符結合的次序,通常也是運算次序;如算術運算符的結合性是從左至右的,就連續的加減或連續的乘除 是從左向右運算;而賦值運算符的結合性是從右至左的,就連續的賦值運算是從右向左逐個運算賦值;在 C 語言中,要特別留意某些運算符因運算對象數據類型不同,可能有不同的意義; 1.算術運算符 算術運算符的運算對象是基本數據類型的數據,實現通常的取整,取
18、負,四就運算,求 兩整數相除后 的余數的運算和增 1 減 1 運算;特別要留心的是整除運算,求余運算,增 1 運算和減 1 運算; 對兩個整型數據執行除運算 / ,稱為整除運算,要特別留意的是兩個整型數據的整除運算的結果是整 型的,如表達式 3/2 的結果為 1,表達式 2/3 的結果為 0; 求余運算符 % 要求參加運算的兩個運算對象均為整型數據,如 5% 3 的值為 2;一般來說,求余運算 所得結果的符號與被除數的符號相同;如 -5%3 的值為 -2, 5%-3 的值為 2; 增 1+ 和減 1- 運算符都是單目運算符, 以整型, 字符型和指針型變量為運算對象, 并轉變運算對象 的值;按它
19、們顯現在變量之前和之后兩種不憐憫形,其作用有微妙的差別; 前綴 + 前綴 +的一般形式是 +變量 例如,如 X 是整型或某種指針類型的變量,就 +X 使變量 X 的值增大 1 個單位,并以 X 的新值作為 表達式 “+X”的運算結果;如以下語句執行前,變量 X 的值為 1,語句 j= + x; 使變量 X 的值變成 3,變量 j的值也為 3;這里所說的一個 “單位 ”是指:假如 X 是整型的,就 +x 就是 一般的說明: “x的值比原值增加 后綴 + 后綴 +的一般形式是 變量 + 1;x 是指針, 它指向數組的某個元素, 就 +x 使它指向數組的后一個元素; 表達式 “變量 +”運算結果是該
20、變量的原先值,在確定了表達式結果之后,用與前綴 +相同的方式增大 該變量的值 1 個單位; 前綴 +和后綴 +都能使變量的值增加 1 個單位,但是它們所代表的表達式的值卻不相同,前者是變量 增加后的值,后者是變量仍未增加的原先值;例如 i,j 為整型變量,且 i 的值為 4,以下分別用和表記 的代碼將使 j 獲得不同的值: j=+i ; j= i+ 都使變量 i 的值變為 5,但使 j 的值為 5;使 j 的值為 4; 第 4 頁,共 10 頁前綴 - 前綴 - 的一般形式是 - 變量 前綴 - 使變量的情削減 或后退 l 個單位,并以變量的新值為表達式 后綴 - 后綴 - 的一般形式是 變量
21、 - “- 變量 ”的運算結果;后綴 - 作用于變量時,以該變量的值作為表達式 “變量 -”的運算結果,即先取其值為結果,然后用與前綴 - 相同的方式削減該變量 1 個單位; 后綴 - 與前綴 - 的區分類似于后綴 +與前綴 +的區分;類似前面的例子,照舊假定 i 的值為 4,兩代 碼 j= -i j=i- 都使變量 i 的值變為 3,但使 j 的值為 3;使 j 的值為 4; 使用 +和 - 運算符時,其運算對象僅適用于變量,不能是常量等數據值表達式;如 4+ 或i+j+ 都是 不合法的; +和 - 是帶有副作用的運算符;建議讀者不要在一個表達式中對同一變量多次使用這樣的運算符,可 能會發生
22、意想不到的結果;如 i 的值為 4,對表達式 i+i+ 可能認為它的值為 9+5;然而在 TURBO C 和 MS C 系統中,它的值為 8;而表達式 +i+i 的值為 12 ;這是由于這些系統在處理 i+ 時,先使用 i 的原值運算整個表達式,然后再讓 i 連續兩次 自增 ;處理 +i 時,在運算表達式值之前,先對 為 8,后一個表達式的值為 12; i 執行兩次自增,然后才運算表達式;放前一個表達式的值 因+ 與+- 與 -類似 是兩個不同運算符, 對于類似表達式 i+j 會有不同的懂得: i+ j 或 i+j ; C 編譯的處理方法是自左至右讓盡可能多的字符組成一個合法的句法單位 如標識
23、符,數字,運算符等 ;因 此, i+j 被說明成 i+j ,而不是 i+j ; 增 1+ 和減 1- 運算符的結合方向是自右至左的; 2.關系運算符 用于關系運算的關系運算符有六個: 大于 ,= 大于等于 ,=等于 和.= 不 等 ;關系運算是雙目運算, 它的運算對象可以是基本數據類型的數據, 用于比較大小 ;或是指向同一個數組 兩元素的指針,用于比較前后關系;在高級語言中,習慣稱條件中意為 “真 ”,不中意為 “假 ”;特別在 C語 言中商定:比較后,條件中意 真 的值為 1;比較后,條件不中意 假 的值為兒用關系運算符將兩個子表達式 連接起來,構成關系比較表達式,求得結果為 1真 或 0假
24、 ; 六個關系運算符中, 運算符 ,= 的優先級高于運算符 =,.= ;如表達式 Xy=Cy=CD ; 另外,為便于描述兩個復雜算式的比較,關系運算符的優先級低于算術運算符的優先級; 設有 i=1, j=2,k=3 ,就表達式 ij的值為 “假”,即表達式的值為 0;表達式 i=kj的值為 “真 ”,即表達 式的值為 1先運算 kj,其值為 1,等于 i;i+jK 的值為 “假”,即表達式 的值為 0; 關系運算符的結合方向是自左至右;仍設 為 1,再運算 11,結果為 0; 3.規律運算符 用于規律運算的規律運算符有三個: i=1 ,j=2 ,k=3,就表達式 kji 的值為 0先運算 kj
25、 ,其值 第 5 頁,共 10 頁& 規律與 , |規律或 , . 規律非 其中運算符 “&”和“|是”雙目運算符,要求有兩個整型或字符型的運算對象,用于連接多個判定條件, 構成更復雜的條件判定 ;運算符 “. 是”單目運算符,用于描述對給定條件的否定判定; 規律運算產生的結果也只能是 1 或 0; 1 表示規律運算結果為 “真 ”用; 0表示運算結果為 “假”; 在判定一個運算對象的值為 “真”或“假 ”時,以運算對象的值不等于零為 “真”,運算對象的值等于 0為 “假 ”; 規律運算符中,按優先級排列為:規律非運算符 .的優先級高于規律與運算符 & ,規律與運算符 & 的 優先級高于規律或
26、運算符 |;另外, & 和 |的優先級低于關系運算符的優先級 ;. 的優先級高于算術運算符的 優先級;規律運算符 |和 & 的結合方向是自左至右,而規律運算符 .的結合方向是自有至左; 需要特別指出的是, “規律與 ”和 “規律或 ”運算符分別有以下性質: a&b, 僅當 a 為 0 時,不管 b 為何值 實際上不再運算 b,結果為 0; a|b,僅當 a 為 1 時,不管 b 為何值 實際上不再運算 b,結果為 1; 上述性質就是說, 對于表達式 a&b, 僅當子表達式 a 為非零時, 才運算子表達式 b;對于表達式 a|b,僅 當子表達式 a 為 0 時,才運算子表達式 b;在詳細編寫程序
27、時,也應利用以上性質;對于兩個條件的規律 與,如當條件 1 不成立情形下,條件 2 的值沒有意義或不行運算時,規律表達式應寫成: 條件 l& 條件 2 防止在條件 1 不成立情形下,運算條件 2;如有條件: y/x2 且 x.=0,應寫成: x.=0 & y/x2 當 X 為 0 時,不會運算 y/X ;而寫成: y/X2 & X.=0 是不正確的,由于當 X 為 0 時,不能運算 y/X ;對于規律或也有類似情形; 由于上述性質,在運算連續的規律與和規律或運算時,實際上不分優先級,而是次序從左至右運算; 在運算規律與運算時,如有左運算對象的值為 0,就不再連續運算規律與運算,并立刻以 0 為
28、規律與運算 的結果 ; 在運算規律或運算時,如有左運算對象的值為 1,就不再連續運算規律或運算,并立刻以 1 為規律 或運算的結果;在次序運算規律表達式的過程中,一旦確定了表達式的最終結果,就不再連續運算; 4.賦值運算符 賦值運算的最簡潔形式是 變量 =表達式 其中 “=”是賦值運算符;賦值運算的執行過程是: l 先運算賦值運算符右端的表達式 ; 2 如表達式的類型與賦值運算符左邊的變量類型不同 成變量的類型 ; 僅限于基本類型 ,將表達式值的類型自動轉換 3將求得的值賦給變量,即儲備到由變量所占的內存中; 簡潔地說,運算表達式的值,將該值賦給變量; 賦值運算也有結果,經賦值運算后,賦值表達
29、式具有賦值后賦位運算符左邊變量同樣的類型和值;因 賦位運算有值,所以可以進一步參加運算,特別是可以再賦植給其它變量;賦值運算符的結合性是 邊有至 左”的,當連續有多個賦值運算時,就從右至左逐個賦值;如有變量定義: int k; double x; 就賦值表達式: x= k= 是先將實數 自動轉換成整數 3 賦給整型變量 k,然后又將整數 3 自動轉換成實數 賦給實型變量 X;所以, k 的值是 3, X 的值是 ; 在程序中,常常遇到在變量當前值的基礎上作某種修正的運算;如 這類運算的特點是:變量既是運算對象,又是賦值對象;為防止對同一儲備對象的地址重復運算, C第 6 頁,共 10 頁語言弓
30、隊復合賦值運算符;它們是 +=,-=, *= , %= , =,= ,&= , =, |= 通常,記日為某個雙目運算符,復合賦值運算 x=e 其等效的表達式為 x= x e 留意,當 e 是一個復雜表達式時,等效表達式的括號是必需的;如 y*= a+b 的等效表達式是 y= y*a+b 賦值運算符和全部復合賦值運算符的優先級全相同,并且都是 號運算符的優先級,低于其它全部運算符的優先級; 5.逗號運算符 “自右至左 ”結合,它們的優先級高于遠 逗號運算符 “,”用于將如干表達式連接起來次序地逐個運算;連續返號運算的一般形式為: 表達式 1,表達式 2, ,表達式 n 式 它的運算次序是從左到右
31、逐一運算各表達式,并以表達式 n 的值為連續逗號運算的結果;例如,表達 x= i=3 , i*2 使 i 等于 3,X 等于 6;其實,逗號運算只是把多個表達式串聯起來,在很多情形下,使用逗號運算的 目的只是想分別運算各個表達式的值,而并非想使用逗號運算中最終那個表達式的值;逗號運算最常用于 for 結構中,用于給多個變量登初值,或用于對多個變量的值逐一修改等;逗號運算符的優先級最低,其結 合性是 “自左向右 ”的; 6.條件運算符 條件運算是一個三目運算,有三個運算對象;條件運算的一般形式為 表達式 1.表達式 2:表達式 3 條件運算的運算規章是: 1運算表達式 1 的值 ; 2假如表達式
32、 1 的值非 0真,就運算表達式 2,并以表達式 2 的值為條件運算的結果 不再運算表達 式 3; 3假如表達式 1 的值為 0假,就運算表達式 3,并以表達式 3 的值為條件運算的結果 不再運算表達 式 2; 例如,表達式 Xy.X : y 假如 xy 條件為真,就條件運算取 x 值,否就取 y 值; 條件運算符 .:的優先級高于賦值運算符, 低于規律運算符,也低于關系運算符和算術運算符; 例如, 表達式 max= X y.X : y+ l 等效于表達式 max=xy .x : y+l 條件運算符的結合性為 “自右至左 ”;例如,表達式 Xy.X : uV.u :V 等效于表達式 Xy.X
33、: uV.u : V 7.長度運算符 長度運算以字節為單位給出其運算對象所需 或所占 的字節數,運算對象可以是任何類型的數據對象 或數據類型;它是依據對象的類型來確定對象 所需 的字節數的; 第 7 頁,共 10 頁長度運算有兩種書寫形式: sizeof 變量名或 sizeof 類型名 假如有某種類型為江的變量 V ,其中 t 可以是系統供應的類型或用戶自己定義的類型,可以是簡潔的, 也可以是數組,結構等;就 sizeof V 就是變量 V 所占的字節數;如有 int j; double x; 表達式 sizeof j 和 sizeOf x 分別是變量 j 和 x 所占的字節數; sizeof
34、t是系統為支配一個類型為 t 的數據對象所需的字節數;如 sizeOfint 和 sizeofdou-ble 分別是系 統為支配一個類型為 int 和 double 變量所需的字節數; 8.位運算符 位運算的運算對象只能是整型或字符型數據,位運算把運算對象看作是由二進位組成的位率信息,按 位完成指定的運算,得到位串信息的結果;位運算符又可分成兩類:一類是位規律運算符,另一類是位移 位運算符; 位規律運算符有: & 按位與 ,|按位或 , 按位異或 , 按位取反 位移位運算有: 位右移 其中按位取反運算符是單目運算符; 其余均為雙位運算符; 位規律運算符的優先級從高到低, 依次為, & ,|,其
35、中的結合方向自右至左,且優先級高于算術運算符,其余運算符的結合方向都是自左至右 , 且優先級低于關系運算符;位移位運算符的優先級低于算術運算符,高于關系運算符,它們的結合方向是 自左至右; 按位與運算符 & 按位與運算將將兩個運算對象的對應位按位遵照以下規章進行運算: 0&0=0 , 0&l=0 ,1&0=0 , 1&l=1 即同為一的位,結果為 1,否就結果為 0; 例如,設 3 的內部表示為 00000011,5 的內部表示為 00000101 ,就 3&5 的結果為 00000001 按位與運 算有兩種典型用法;一是取一個位率信息的某幾位,如以下代碼截取;的最低 7 位, &0177t
36、二是讓某變量 保留某幾位,其余位設置成 0,如以下代碼讓 X 只保留最低 6 位: x=X&077 ,以上用法都先要設計好一個 常數,該常數只有需要的位是互,不需要的位是 按位或運算符 | 0;用它與指定的位串信息按位與; 按位或運算將兩個運算對象的對應位按位遵照以下規章進行運算: 0|0=0, 0|l=1 , 1|0=l , 1|1=1 即只要有五個是 1 的位,結果為 1,否就為 0; 例如, 023|035 結果為 037; 按位或運算的典型用法是將一個位串信息的某幾位設置成 1;如將要獲得最右 4 位為 1,其它位與變量 j 的其它位相同,可用規律或運算 017|j;如要把這結果賦給變
37、量 j,可寫成: j=017|j 按位異或運算符 按位異或運算將兩個運算對象的對應位按位遵照以下規章進行運算: 00= 0, 01=l , l0=l , 1l=0 即相應位的值相同的,結果為 0,不相同的結果為 l; 例如, 013035 的結果為 026; 異或運算的意思是求兩個運算對象相應位值是否相異, 相異的為 1,相同的為 0;按位異或運算的典型 用法是求一個位串信息的某幾位信息的反; 如欲求整型變量 j 的最右 4 位信息的反, 用規律異或運算 017j, 就能求得 j 最右 4 位的信息的反,即原先為 1 的位,結果是 0; 原先為 0 的位,結果是 1; 按位取反運算符 第 8
38、頁,共 10 頁按位取反運算是單目運算,用來求一個位串信息按位的反,即那些為 0 的位,結果是 1; 而那些為 1 的 位,結果是幾例如, 7 的結果為 0 xfff8 ;取反運算常用來生成與系統實現無關的常數;如要將變量 X 最 低 6 位置成 0,其余位不變,可用代碼 X= X& 077 實現;以上代碼與整數 X 用 2 個字節仍是用 4 個字 節來實現無關; 當兩個長度不同的數據進行位運算時 行位運算; 假如短的數為正數, 高位用 就高位總是用 0 補滿; 例如 long 型數據與 int 型數據 ,將兩個運算對象的右端對齊進 0 補滿 ;假如短的數為負數, 高位用 1 補滿;假如短的為
39、無符號整數, 位運算用來對位串信息進行運算,得到位串信息結果;如以下代碼能取整型變量 k 的位串信息的最右 邊為亞的信息位: k-lk&k ;位左移運算符 位左移運算符用來將左運算對象 整型或字符型數據 作為二進位信息串作整體向左移動,移動的位數 由右運算對象指定,右端空出的位用 0 補充,得到新的位申信息;例如 014 位右移運算將一個位串信息向右移指定的位, 右端移出的位的信息被丟棄; 例如 122,結果為 3;與 左移相反,對于小整數,每右移 1 位,相當于除以人在右移時,需要留意符號位問題;對無符號數據,右 移時,左端空出的位用 0 補充;對于帶符號的數據,假如移位前符號位為剛正數 ,就左端也是用 0 補充 ; 假如移位前符號位為 1 負數 ,就左端用 0 或用 1 補充,這取決于運算機系統;對于負數右移,稱用 0 補充 的系統為 “規律右移 ”,用 1補充的系統為 printf ”%dn”, -24; “算術右移 ”;以下代碼能說明讀者上機的系統所接受的右移方法: 者輸出結果為一 l ,是接受算術右移 ;輸出結果為一個大整數,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年廣東工程職業技術學院高職單招職業技能測試近5年常考版參考題庫含答案解析
- 2025年廣東南方職業學院高職單招職業技能測試近5年常考版參考題庫含答案解析
- 2025年山西建筑職業技術學院高職單招職業技能測試近5年常考版參考題庫含答案解析
- 2025年山東電子職業技術學院高職單招語文2019-2024歷年真題考點試卷含答案解析
- 2025年山東圣翰財貿職業學院高職單招職業適應性測試歷年(2019-2024年)真題考點試卷含答案解析
- 2025年安徽糧食工程職業學院高職單招職業技能測試近5年常考版參考題庫含答案解析
- 2025年寧夏警官職業學院高職單招職業適應性測試歷年(2019-2024年)真題考點試卷含答案解析
- 2025年天津現代職業技術學院高職單招(數學)歷年真題考點含答案解析
- HIV母嬰傳播預防知識課件
- crrt相關知識課件
- 汽車修理業務受理程序、服務承諾、用戶抱怨制度
- 起重機械吊具、索具檢查記錄表(鋼絲繩)
- 小學三年級毛筆書法教案含三維目標
- 土木工程畢業論文7篇
- 代加工洗煤合同模板
- 2022年湖北武漢中考滿分作文《護他人尊嚴燃生命之光》
- 三方代付工程款協議書范本2024年
- 有限空間作業氣體檢測記錄表
- 幼升小必練20以內加減法練習試題打印版
- 2024年四川省成都市“蓉漂”人才薈武候區招聘23人歷年(高頻重點提升專題訓練)共500題附帶答案詳解
- 農村生活污水治理提升工程-初步設計說明
評論
0/150
提交評論