C語言基礎以及流水燈實現(xiàn)_第1頁
C語言基礎以及流水燈實現(xiàn)_第2頁
C語言基礎以及流水燈實現(xiàn)_第3頁
C語言基礎以及流水燈實現(xiàn)_第4頁
C語言基礎以及流水燈實現(xiàn)_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 第三章第三章C語言基礎以及語言基礎以及流水燈的實現(xiàn)流水燈的實現(xiàn)C51數(shù)據(jù)類型 uC51定義了定義了標準標準C語言語言的所有數(shù)據(jù)的所有數(shù)據(jù)類型類型;u同時對標準同時對標準C語言進行語言進行了擴展,更了擴展,更加注意對系加注意對系統(tǒng)資源的合統(tǒng)資源的合理利用,如理利用,如表所示。表所示。 數(shù)據(jù)類型數(shù)據(jù)類型長度長度數(shù)值范圍數(shù)值范圍unsigned charunsigned char1 1字節(jié)字節(jié)0 0255255charchar1 1字節(jié)字節(jié)-128-128+127+127unsigned intunsigned int2 2字節(jié)字節(jié)0 06553565535intint2 2字節(jié)字節(jié)-32768-

2、32768+32767+32767unsigned longunsigned long4 4字節(jié)字節(jié)0 042949672954294967295longlong4 4字節(jié)字節(jié)-2147483648-2147483648+2147483647+2147483647floatfloat4 4字節(jié)字節(jié)1.175494E-381.175494E-383.402823E+383.402823E+38* *1 13 3字節(jié)字節(jié)對象的地址對象的地址bitbit位位0 0或或1 1sfrsfr1 1字節(jié)字節(jié)0 0255255sfr16sfr162 2字節(jié)字節(jié)0 06553565535sbitsbit位位0

3、0或或1 1C51基本數(shù)據(jù)類型 uchar字符類型字符類型u長度是一個字節(jié)(長度是一個字節(jié)(8位)位) uint整型整型u長度為兩個字節(jié)(長度為兩個字節(jié)(16位)位) ulong長整型長整型 u長度為四個字節(jié)(長度為四個字節(jié)(32位)位) ufloat浮點型浮點型u長度為四個字節(jié)(長度為四個字節(jié)(32位)位) u* 指針型指針型 u指針型本身就是一個變量,在這個變量中存放的是指指針型本身就是一個變量,在這個變量中存放的是指向另一個數(shù)據(jù)的地址。向另一個數(shù)據(jù)的地址。u這個指針變量要占據(jù)一定的內存單元,在這個指針變量要占據(jù)一定的內存單元,在C51中它的長中它的長度一般為度一般為13個字節(jié)。個字節(jié)。

4、C語言的變量類型及范圍C語言常量與變量 u常量是常量是在程序運行過程中在程序運行過程中不能改變的不能改變的,而,而變量是變量是可以可以在程序運行過程中在程序運行過程中不斷變化的不斷變化的。u變量的定義可以使用所有變量的定義可以使用所有C51編譯器支持的數(shù)據(jù)編譯器支持的數(shù)據(jù)類型,而常量的數(shù)據(jù)類型只有整型、浮點型、字類型,而常量的數(shù)據(jù)類型只有整型、浮點型、字符型、字符串型和位變量。符型、字符串型和位變量。 常量 u常量可用在不必改變值的場合,如固定的數(shù)據(jù)表,字庫等。常量可用在不必改變值的場合,如固定的數(shù)據(jù)表,字庫等。 u常量的定義方式有幾種常量的定義方式有幾種,下面來加以說明。下面來加以說明。 #

5、difine False 0 x0; /用預定義語句可以定義常量用預定義語句可以定義常量 #difine True 0 x1; /這里定義這里定義False為為0,True為為1 程序中用到程序中用到False和和True,在編譯時,在編譯時,F(xiàn)alse替換為替換為0,True替換為替換為1。 unsigned int code a=100; /用用code把把a定義在程序存儲器中并賦定義在程序存儲器中并賦值值 const unsigned int c=100; /用用const定義定義c為無符號為無符號int常量并賦值常量并賦值 以上兩句它們的值都保存在程序存儲器中,而程序存儲器在運以上兩句

6、它們的值都保存在程序存儲器中,而程序存儲器在運行中是不允許被修改的,所以如果在這兩句后面用了類似行中是不允許被修改的,所以如果在這兩句后面用了類似a=110,a+這樣的賦值語句,編譯時將會出錯。這樣的賦值語句,編譯時將會出錯。 變量 u變量就是一種在程序執(zhí)行過程中其值能不斷變化變量就是一種在程序執(zhí)行過程中其值能不斷變化的。的。u要在程序中使用變量必須先用標識符作為變量名,要在程序中使用變量必須先用標識符作為變量名,并指出所用的數(shù)據(jù)類型和存儲模式,這樣編譯系并指出所用的數(shù)據(jù)類型和存儲模式,這樣編譯系統(tǒng)才能為變量分配相應的存儲空間。統(tǒng)才能為變量分配相應的存儲空間。u定義一個變量的格式如下:定義一個

7、變量的格式如下: 存儲種類存儲種類數(shù)據(jù)類型數(shù)據(jù)類型存儲器類型存儲器類型變量名表變量名表在定義格式中除了在定義格式中除了數(shù)據(jù)類型數(shù)據(jù)類型和和變量名表變量名表是必要的,其是必要的,其它都是可選項。它都是可選項。 C51運算符、表達式及其規(guī)則1 C51最基本的五種算術運算符+ 加法運算符,或正值符號- 減法運算符,或負值符號* 乘法運算符/ 除法運算符% 模(求余)運算符。算術表達式、優(yōu)先級與結合性 算術表達式用算術運算符和括號將運算對象連接起來的式子稱為表達式。其中的運算對象包括常量、變量、函數(shù)、數(shù)組和結構等。 優(yōu)先級指當運算對象兩側的都有運算符時,執(zhí)行運算的先后次序。按運算符優(yōu)先級別的高低順序執(zhí)

8、行運算。 結合性指當一個運算對象兩側的運算符的優(yōu)先級別相同時的運算順序。2. Cx51提供六種關系運算符關系運算符的優(yōu)先級關系表達式:用關系運算符將兩個表達式(可以是算術表達式、關系表達式、邏輯表達式及字符表達式等)連接起來的式子,稱為關系表達式。關系表達式的結果:由于關系運算符總是二目運算符,故它作用在運算對象上產(chǎn)生的結果為一個邏輯值,即真或假。C語言1代表真,以0代表假。關系運算符的優(yōu)先級低于算術運算符。關系運算符的優(yōu)先級高于賦值運算符。例: 若 a=4,b=3,c=1,則ab 的值為真,表達式值為1;b+cb= = c的值為真;3. Cx51 邏輯運算符、表達式及優(yōu)先級Cx51提供3種邏

9、輯運算符:& 邏輯“與” (AND)| 邏輯“或” (OR)! 邏輯“非”(NOT)“&”和“|”是雙目運算符,要求有兩個運算對象;而“!”是單目運算符,只要求有一個運算對象。 Cx51邏輯運算符與算術運算符、關系運算符和賦值運算符之間優(yōu)先級的次序。其中“!”(非)運算符優(yōu)先級最高,算術運算符次之,關系運算符再次之,&和|再次之,最低為賦值運算符。Cx51位操作及其表達式Cx51提供了如下位操作運算符:& 按位與| 按位或 按位異或 按位取反 位右移例 若 a = 54H = 01010100B,b=3BH=00111011B則表達式c = a & b的

10、值為10H,即 位左移和位右移運算符()位左移、位右移運算符“”,用來將一個數(shù)的各二進制位的全部左移或右移若干位;移位后,空白位補0,而溢出的位舍棄。例 若 a = EAH = 11101010B,則表達式a = a2,將a值左移兩位,其結果為A8H,即自增減運算符、復合運算符及其表達式1. 自增減運算符自增減運算符的作用是使變量自動加1或減1.如+i、-i 在使用i之前,先使i值加(減)1。i +、i - 在使用i之后,再使i值加(減)1。粗略地看,+i和i+的作用都相當于i=i+1,但+i和i+的不同之處在于+i先執(zhí)行i=i+1,再使用i的值,而i+則是先使用i的值,再執(zhí)行i=i+1。例1

11、 若i值原來為5,則j = + +i j值為6,i值為6;j = i+ + j值為5,i值為6;1. 復合運算符及其表達式凡是二目運算符,都可以與賦值運算符“=”一起組成復合賦值運算符。Cx51共提供了10種復合賦值運算符,及+=、=、*=、/=,=、&=、=、|=。采用這種復合賦值運算的目的,是為了簡化程序,提高C程序編譯效率。如:a+=b 相當于a=a+b a%=b 相當于 a=a%ba-=b 相當于a=a-b a=b 相當于 a=ab) max=a; else max=b;多分支if語句u多分支多分支if語句的基本形式為:語句的基本形式為:if(表達式(表達式 1) 語句語句1

12、else if(表達式(表達式 2) 語句語句2 else if(表達式(表達式 3) 語句語句3 else if(表達式(表達式 m) 語句語句melse 語句語句n if語句的嵌套u當當ifif語句中的語句體又包含一個或多個語句中的語句體又包含一個或多個ifif語句,稱為語句,稱為ifif語句的嵌套。其一般形式如下:語句的嵌套。其一般形式如下:if(if(表達式表達式) ) if( if(表達式表達式1) 1) 語句語句1111 else else 語句語句1212else else if( if(表達式表達式2) 2) 語句語句2121 else else 語句語句2222u應當注意應當

13、注意ifif與與elseelse的配對關系,的配對關系,C C語言規(guī)定:語言規(guī)定:elseelse總是與它上面的最近的總是與它上面的最近的ifif配對配對 表達式為真,表達式1為假;執(zhí)行?表達式為真,表達式1為真;執(zhí)行?表達式為假,表達式2為真;執(zhí)行?表達式為假,表達式2為假;執(zhí)行? swich語句 u SwitchSwitch的一般形式如下:的一般形式如下: switchswitch(表達式)(表達式) case case 常量表達式常量表達式1 1:語句:語句1 1 case case 常量表達式常量表達式2 2:語句:語句2 2 case case 常量表達式常量表達式n n:語句:語句

14、n n default default:語句:語句n+1n+1 u當表達式的值與某一個當表達式的值與某一個casecase后面的常量表達式相后面的常量表達式相等時,就執(zhí)行此等時,就執(zhí)行此casecase后面的語句;后面的語句;u若所有的若所有的casecase中的常量表達式的值都沒有與表達中的常量表達式的值都沒有與表達式值匹配的,就執(zhí)行式值匹配的,就執(zhí)行defaultdefault后面的語句;后面的語句;u每一個每一個casecase的常量表達式的值必須不相同;的常量表達式的值必須不相同;u各個各個casecase和和defaultdefault的出現(xiàn)次序不影響執(zhí)行結果。的出現(xiàn)次序不影響執(zhí)行結

15、果。 swich語句特別說明 u執(zhí)行完一個執(zhí)行完一個case后面的語句后,并不會自動跳后面的語句后,并不會自動跳出出switch,轉而去執(zhí)行其后面的語句;,轉而去執(zhí)行其后面的語句; u通常在每一段通常在每一段case的結束加入的結束加入“break;”語句,語句,使程序退出使程序退出switch結構,即終止結構,即終止switch語句的語句的執(zhí)行。執(zhí)行。u如:如:switch (x) case 1: y=1; case 2: y=2; case 3: y=0; 假如假如x的值是的值是1,y=? 循環(huán)結構控制語句u在一個實用的程序中,循環(huán)結構是必不可少的。在一個實用的程序中,循環(huán)結構是必不可少的

16、。 循環(huán)循環(huán)是反復執(zhí)行某一部分程序行的操作。通過下面是反復執(zhí)行某一部分程序行的操作。通過下面C語言程語言程序,來看如何利用這些循環(huán)語句編寫循環(huán)程序。序,來看如何利用這些循環(huán)語句編寫循環(huán)程序。void Delay() void main() unsigned char i, j; while(1) for (i=0;i255;i+) ; u這段程序中有兩處用到了循環(huán)語句,首先是主程序使用了這段程序中有兩處用到了循環(huán)語句,首先是主程序使用了: while(1)u這樣的循環(huán)語句寫法,在這樣的循環(huán)語句寫法,在中的所有程序將會不斷地循環(huán)執(zhí)中的所有程序將會不斷地循環(huán)執(zhí)行,直到斷電為止;其次是延時程序,使用

17、了行,直到斷電為止;其次是延時程序,使用了for循環(huán)語句循環(huán)語句的形式。的形式。 while語句u當型循環(huán),即當給定的條件成立當型循環(huán),即當給定的條件成立時,執(zhí)行循環(huán)體部分,執(zhí)行完畢時,執(zhí)行循環(huán)體部分,執(zhí)行完畢回來再次判斷條件,如果條件成回來再次判斷條件,如果條件成立繼續(xù)循環(huán),否則退出循環(huán)。其立繼續(xù)循環(huán),否則退出循環(huán)。其一般形式如下:一般形式如下:while(表達式表達式) 循環(huán)體語句循環(huán)體語句u當表達式為非當表達式為非0值(真)時,執(zhí)行值(真)時,執(zhí)行while語句中的內嵌語句。語句中的內嵌語句。u其特點是:先判斷表達式,后執(zhí)其特點是:先判斷表達式,后執(zhí)行語句。行語句。 例:累加運算,求su

18、m=1+2+3+4+5+99main( ) int sum=0,i=1; while(i100) sum=sum+i; i+; i100 sum=sum+ii+ 初始化Y 結束Ndo-while語句u直到型循環(huán),即先執(zhí)行循環(huán)體,直到型循環(huán),即先執(zhí)行循環(huán)體,然后判斷給定的條件,只要條件然后判斷給定的條件,只要條件成立就繼續(xù)循環(huán),直到判斷出給成立就繼續(xù)循環(huán),直到判斷出給定的條件不成立時退出循環(huán)。其定的條件不成立時退出循環(huán)。其一般形式如下:一般形式如下:do 循環(huán)體語句循環(huán)體語句while(表達式表達式)udo-while語句特點是先執(zhí)行循環(huán)語句特點是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。體,然后

19、判斷循環(huán)條件是否成立。u對同一個問題,既可以用對同一個問題,既可以用while語語句處理,也可以用句處理,也可以用do-while語句語句處理,但是這兩個語句是有區(qū)別處理,但是這兩個語句是有區(qū)別的。的。 for語句uC語言中的語言中的for語句使用最為靈活,不僅語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結束條件的情況。環(huán)結束條件的情況。for語句的一般形語句的一般形式為:式為:for(表達式(表達式1;表達式;表達式2;表達式;表達式3) 循環(huán)體語句循環(huán)體語句u執(zhí)行步驟如下:執(zhí)

20、行步驟如下:(1)先求解表達式)先求解表達式1;(2)求解表達式)求解表達式2,其值為真,則執(zhí)行,其值為真,則執(zhí)行for語句中指定的內嵌語句(循環(huán)體),然語句中指定的內嵌語句(循環(huán)體),然后執(zhí)行第(后執(zhí)行第(3)步,如果為假,則結束循)步,如果為假,則結束循環(huán);環(huán);(3)求解表達式)求解表達式3;(4)轉回第)轉回第2步繼續(xù)執(zhí)行。步繼續(xù)執(zhí)行。 表達式1:給循環(huán)控制變量賦初值。表達式2:循環(huán)條件,是一個邏輯表達式,它決定什么時候退出循環(huán);表達式3:循環(huán)變量增值,規(guī)定循環(huán)控制變量每循環(huán)一次后按什么方式變化。這三部分之間用“;”分開。例:累加運算,求sum=1+3+5+7+9+99main( ) i

21、nt sum=0,i; for(i=1;i100; i=i+2) sum=sum+i;break語句 ubreak語句強行結束循環(huán),轉向執(zhí)行循環(huán)語句的下語句強行結束循環(huán),轉向執(zhí)行循環(huán)語句的下一條語句。一條語句。u在一個循環(huán)程序中,在一個循環(huán)程序中, 可以通過循環(huán)語句中的表達式可以通過循環(huán)語句中的表達式來控制循環(huán)程序是否結束。除此之外,還可以通過來控制循環(huán)程序是否結束。除此之外,還可以通過break語句從循環(huán)體內跳出循環(huán)體,即提前結束循語句從循環(huán)體內跳出循環(huán)體,即提前結束循環(huán),接著執(zhí)行循環(huán)下面的語句。環(huán),接著執(zhí)行循環(huán)下面的語句。u一般形式:一般形式: break;u注意:注意:break語句語句

22、不能用于循環(huán)語句和不能用于循環(huán)語句和switch語句之語句之外外的任何其他語句中;的任何其他語句中;break語句是結束整個循環(huán)語句是結束整個循環(huán)過程過程,不再判斷執(zhí)行循環(huán)的條件是否成立。,不再判斷執(zhí)行循環(huán)的條件是否成立。 continue語句ucontinue語句作用為結束本次循環(huán),即跳過循環(huán)體語句作用為結束本次循環(huán),即跳過循環(huán)體中下面尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行中下面尚未執(zhí)行的語句,接著進行下一次是否執(zhí)行循環(huán)的判定。循環(huán)的判定。u對于對于for循環(huán),跳過循環(huán)體其余語句,轉向循環(huán)變量循環(huán),跳過循環(huán)體其余語句,轉向循環(huán)變量增值表達式的計算;對于增值表達式的計算;對于while和和do

23、-while循環(huán),跳循環(huán),跳過循環(huán)體其余語句,但轉向循環(huán)繼續(xù)條件的判定。過循環(huán)體其余語句,但轉向循環(huán)繼續(xù)條件的判定。u一般形式:一般形式: continue;u注意:注意:continue只能用于循環(huán)語句中;只能用于循環(huán)語句中;continue語句語句只結束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行。只結束本次循環(huán),而不是終止整個循環(huán)的執(zhí)行。for語句的用法 for語句的一般形式語句的一般形式(用法用法1) for(表達式表達式1;表達式表達式2;表達式表達式3) (需要執(zhí)行的語句需要執(zhí)行的語句); 用法用法2: for(i=0;i30000;i+); 用法用法3: for(;)while語句的用法 while語句的一般形式語句的一般形式 while(表達式表達式) 循環(huán)語句;循環(huán)語句; 函數(shù)的簡單介紹 函數(shù)定義的一般形式:函數(shù)定義的一般形式: 函數(shù)值類型函數(shù)值類型 函數(shù)名函數(shù)名(形式參數(shù)列表形式參數(shù)列表) 函數(shù)體函數(shù)體 1、函數(shù)值類型、函數(shù)值類型2、函數(shù)名、函數(shù)名3、形式參數(shù)列表、形式參數(shù)列表4、函數(shù)體、函數(shù)體5、main函數(shù)函數(shù)(必須有且

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論