![自考計算機基礎與程序設計11_第1頁](http://file4.renrendoc.com/view/200310adccc27d0a5c6963999c46eb4c/200310adccc27d0a5c6963999c46eb4c1.gif)
![自考計算機基礎與程序設計11_第2頁](http://file4.renrendoc.com/view/200310adccc27d0a5c6963999c46eb4c/200310adccc27d0a5c6963999c46eb4c2.gif)
![自考計算機基礎與程序設計11_第3頁](http://file4.renrendoc.com/view/200310adccc27d0a5c6963999c46eb4c/200310adccc27d0a5c6963999c46eb4c3.gif)
![自考計算機基礎與程序設計11_第4頁](http://file4.renrendoc.com/view/200310adccc27d0a5c6963999c46eb4c/200310adccc27d0a5c6963999c46eb4c4.gif)
![自考計算機基礎與程序設計11_第5頁](http://file4.renrendoc.com/view/200310adccc27d0a5c6963999c46eb4c/200310adccc27d0a5c6963999c46eb4c5.gif)
版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
本文格式為Word版,下載可任意編輯——自考計算機基礎與程序設計11
第九章
位運算與預處理
第一節(jié)位運算其次節(jié)宏定義第三節(jié)文件包含第四節(jié)預編譯
共26頁
第2頁
運算符
()括號單目運算符算術運算符關系運算符規(guī)律運算符條件運算符
改變表達式中的優(yōu)先級關系
++;--;!;-(負),*(指針),(取地址)*;/;%+;;;=;===;!=||?:
高
賦值運算符逗號運算符
=;+=;-=;*=;/=;%=,低
位運算符
將參與運算的兩個操作數(shù),按對應的二進制位分別進行以下運算
按位與
|按位或
~
^
位左移
位右移
按位取反按位異或
2)算術表達式的格式:~是單目運算符:~a其余都是雙目運算符:ab,a|b,a2,b23)操作步驟1)將運算分量轉化為二進制(默認8位二進制)轉化時右端對齊,假使位數(shù)不夠,左邊補符號位,即正數(shù)補0,負數(shù)補1.inta=3,b=5,d;d=ab?
a00000011
b00000101
2)再針對每個二進制位進行位運算3)運算后的結果轉回為十進制
位運算符
操作步驟1)將運算分量轉化為二進制(默認8位二進制)2)再針對每個二進制位進行位運算3)結果轉回十進制
1.按位與--按位與運算:假使兩個對應的位都是1,則該位為1,否則為0.inta=3,b=5,d;d=ab?
0000001110000010100000001
1)將a,b轉化二進制2)進行位與運算3)將結果轉回十進制
位運算符
操作步驟1)將運算分量轉化為二進制(默認8位二進制)2)再針對每個二進制位進行運算3)結果轉回十進制
2.按位或--|按位或運算:假使兩個對應的位有一個1,則該位為1,否則為0.inta=3,b=5,d;d=a|b?
000000117|0000010100000111
1)將a,b轉化二進制2)進行位或運算3)將結果轉回十進制
位運算符
操作步驟1)將運算分量轉化為二進制(默認8位二進制)2)再針對每個二進制位進行運算3)結果轉回十進制
3.按位異或--^按位異或運算:假使兩個對應的位不同,則為1,否則為0.00000011inta=3,b=5,d;d=a^b?
6
~
0000010100000110
1)將a轉化二進制2)進行位異或運算3)將結果轉回十進制
位運算符
操作步驟1)將運算分量轉化為二進制(默認8位二進制)2)再針對每個二進制位進行運算3)結果轉回十進制
4.按位取反--~按位取反運算:假使位為1,則結果為0,假使位為0,結果為1.注意:單目運算符,格式:~a~inta=5,b;b=~a?
0000010111111010符號位為1,說明是負數(shù)
-6轉十進制
1)將a轉化二進制2)進行位取反運算除符號外,位取反100001013)將結果轉回十進制末尾+110000110
位運算符
操作步驟1)將運算分量轉化為二進制(默認8位二進制)2)再針對每個二進制位進行運算3)結果轉回十進制
5.位左移()和位右移()將一個數(shù)的全部二進制位左移或右移若干位.格式:左邊是移位處理的對象,右邊是整數(shù)表達式,表
示移動多少位a2a2201
00000101
inta=5,b;b=a2?b=a2;
a20001010000000101a200000001
1)左移時,低位補02)右移時,對于正數(shù),高位補0,對于負數(shù),高位補1
位運算符
將參與運算的兩個操作數(shù),按對應的二進制位分別進行以下運算
~按位取反
按位與
|
^
位左移
位右移
按位或按位異或
3)優(yōu)先級~取反,位移位與^位異或|位或4)結合性:取反是自右向左其余是自左向右注意:1)位運算都只能針對整數(shù)和字符型數(shù)據(jù)2323.0錯誤2)位運算和賦值運算符一起構成復合賦值運算符=,|=,^=,=,=
位運算符舉例:00000011inta=3,b=11;表達式~ab結果?8~a11111100000010110000100000000011inta=3,b=11;表達式a|b結果?|0000101100001011共26頁第11頁
運算符高
()括號單目運算符算術運算符關系運算符規(guī)律運算符條件運算符
改變表達式中的優(yōu)先級關系
++;--;!;-(負),*(指針),(取地址),~*;/;%+;-,;;=;===;!=^|||?:
賦值運算符逗號運算符
=;+=;-=;*=;/=;%=,低
預處理C語言程序的執(zhí)行過程:編寫源程序(.c)編譯程序(.obj)鏈接程序可執(zhí)行程序(.exe)執(zhí)行程序,獲得結果
預處理:程序被編譯以前,編譯系統(tǒng)會先對程序中三種特別的命令進行〞預先處理〞,然后將預處理結果和源程序進行編譯.宏定義預處理
#define#include
用一個名字代替一個字符串使用庫函數(shù)時,包含相應頭文件
文件包含條件編譯
#ifdef….#endif依照不同條件選擇編譯不同的程序部分
預處理宏的使用:包括宏定義、宏調用和宏展開三部分1)編程人員為了縮短編寫代碼的長度,用宏定義說明用一個宏名代替一個長的字符串。例如:#definePI3.14159262)在編程時,用到長字符串的地方用宏名替代,這個過程稱為例如:S=PI*r*r;宏調用。3)在編譯前,系統(tǒng)如何理解這些宏調用?根據(jù)宏定義,系統(tǒng)自動將所有宏名換回長字符串,這個過程稱為宏展開.我們閱讀別人編寫的宏調用也做這樣的替換舉例:#definePI3.1415926main(){intr=3;doubles,d;d=2*PI*r;/*圓周長*/S=PI*r*r;/*面積*/}main(){intr=3;doubles,d;d=2*3.1415926*r;/*圓周長*/S=3.1415926*r*r;/*面積*/}
預編譯
宏展開
預處理使用宏的意義:
舉例:#definePI3.1415926main(){intr=3;doubles,d;d=2*PI*r;/*圓周長*/S=PI*r*r;/*面積*/}
優(yōu)點:1)用短小有意義的名字代替一長串的字符,減少輸入量2)便于修改.修改一個地方,則全部修改
預處理宏分為:無參宏和帶參宏
1)無參宏定義:告訴系統(tǒng),用標識符來表示一個字符序列宏定義命令宏名,一般大寫
常數(shù),表達式
格式:#define
標識符
字符序列
不以分號結尾定義符號常量的方法就是
分隔用空格分隔用空格
宏定義寫在函數(shù)的外面,一般在文件開頭一種宏定義#definePI3.14159262)無參宏調用:在程序里,用到字main()符序列的地方改用標識符{intr=3;doubles,d;d=2*PI*r;/*圓周長*/3)無參宏展開:系統(tǒng)自動將宏名替S=PI*r*r;/*面積*/換為字符序列d=2*3.1415926*rs=3.1415926*r*r;}
預處理進行宏定義時,可以引用已定義的宏名,可以層層替換舉例:#defineR3#definePI3.1415926#defineD2*PI*Rmain(){printf(“%f〞,D);}
D2*PI*R2*3.1415926*3
預處理1)帶參宏定義:多個參數(shù)由逗號分隔
格式:#define
標識符(形參列表)字符序列隔開用空格
隔開用空格
2)帶參宏定義的調用:標識符(實參列表);/*實參可以是數(shù)值和表達式*/
3)帶參宏定義的展開(系統(tǒng)如何理解帶參的宏調用?):宏調用置換為字符序列.將字符序列中,所有形參符號(a,b)用實參符號(3,4)來置換,替換的過程是簡單的符號置換
#definemax(a,b)(ab)?a:bmax(3,4)max(3,4)展開為34?3:4結果:4
舉例:#definemax(a,b)(ab)?a:bmain(){inta=3,b=4,m;m=max(3,4);printf(“%d〞,m);}
預處理帶參宏:
#defineV(s1,s2)s1=i*w;s2=i*hmain(){inti=3,w=4,h=5,a,b;V(a,b);printf(“a=%d,b=%d〞,a,b);}V(a,b)置換為s1=i*w;s2=i*h
遇到宏調用,將宏調用置換為字符序列.將字符序列中,所有形參符號用實參符號來置換,替換的過程是簡單的符號置換
形參符號:(s1,s2)實參符號:(a,b)
將s1=i*w;s2=i*h中,所有的s1替換為a,s2替換為b,其余不變a=i*w;b=i*h;
a=12,b=15;
預處理帶參宏:
將字符序列中,所有形參符號替換為對應實參符號
#defineS(x)x*xmain(){intm;m=S(3);m=S(3+1);}3*3(3+1)*(3+1)?結果:3+1*3+17注意:替換的過程是簡單的字符置換,
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 涉外建設工程施工合同
- 家居行業(yè)設計風格與文化內涵的融合
- 三農行業(yè)手冊合作社運營
- 廚房承包合同書參考
- Go語言基礎概念與實踐作業(yè)指導書
- 內部審計與風險管理作業(yè)指導書
- 擔保書之擔保型買賣合同
- 物流信息管理系統(tǒng)作業(yè)指導書
- 私人教練勞動合同
- 石油化工行業(yè)安全環(huán)保管理體系建設方案
- 二零二五年度大型自動化設備買賣合同模板2篇
- 2024版金礦居間合同協(xié)議書
- 2025內蒙古匯能煤化工限公司招聘300人高頻重點提升(共500題)附帶答案詳解
- PFMEA模板完整版文檔
- GB/T 4214.1-2017家用和類似用途電器噪聲測試方法通用要求
- GB/T 11822-2000科學技術檔案案卷構成的一般要求
- 壓力管道基本知識課件
- 小學英語 國際音標 練習及答案
- 優(yōu)秀班主任經(jīng)驗交流課件-班主任經(jīng)驗交流課件
- 2023年廣州金融控股集團有限公司招聘筆試題庫及答案解析
- 血液科品管圈匯報-PPT課件
評論
0/150
提交評論