青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

聚星亭

吾笨笨且懶散兮 急須改之而奮進(jìn)
posts - 74, comments - 166, trackbacks - 0, articles - 0
  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    通過上次課題的講述,相信大家一定對(duì)什么是數(shù)據(jù)及數(shù)據(jù)的定義和使用方法有一定的了解了,在看本次課題之前希望大家能趁熱打鐵,再到網(wǎng)上下本C語言的教程,最好是買本數(shù)來鞏固下變量相關(guān)的知識(shí)。

 

大家明白了怎么定義變量,怎么給變量賦值了,自然的就應(yīng)該進(jìn)一步了解一下一些詳細(xì)的代碼怎么編寫了。

 

今天我們的任務(wù)比較簡單,就講一下如何編寫代碼及實(shí)現(xiàn)代碼的流程控制。應(yīng)該說這個(gè)是非常簡單的東西了,本來我沒打算講它,可是本著一步一個(gè)腳印的原則,我還是簡要的說一下。在本次課題之后,我會(huì)緊跟著出一個(gè)函數(shù)的專題,來作為代碼篇的完善,至此大家應(yīng)該能獨(dú)立的寫自己的程序了。

 

本次課題知識(shí)點(diǎn)不是很多(也不少,但是都很簡單。),主要是在于多寫,多練,知道自己能把一些現(xiàn)實(shí)的問題轉(zhuǎn)換成代碼來解決問題。

 

       不多廢話,先說下本次課題要寫的主要內(nèi)容:

  1. 程序的運(yùn)算和邏輯判斷
  2. 三種程序流程控制結(jié)構(gòu)詳解。
  3. 養(yǎng)成良好的代碼編寫風(fēng)格。
  4. 結(jié)束語

 

下面開始進(jìn)入正題。

一、           程序的運(yùn)算和邏輯判斷。

說計(jì)算是電腦最基本的功能,相必沒有人會(huì)反對(duì)的。做程序,自然最基礎(chǔ)的就是這些運(yùn)算了。

我知道,看這個(gè)破爛文章的朋友對(duì)數(shù)據(jù)應(yīng)該都是不感冒的。不過大家放心,這里牽扯的運(yùn)算都很簡單,就是小學(xué)的加、減、成、除、取余數(shù),是、非、與或和位移,沒別的了。先讓我們來了解下算術(shù)運(yùn)算。

1.         算術(shù)運(yùn)算。

加減乘除相比大家都應(yīng)該很了解的。這里我不想費(fèi)太多的篇幅講述這些大家都明白的知識(shí),我把要說的知識(shí)列出來,大家自己了解就好。

 

用于算術(shù)運(yùn)算的運(yùn)算符有:

 

我想不用我說,加、減、成、除這些運(yùn)算符大家都接觸過的,關(guān)于“%”運(yùn)算符,其實(shí)就是取余數(shù);用這些運(yùn)算符可以將一些數(shù)字,變量等連接起來,進(jìn)行運(yùn)算,這樣的式子叫做表達(dá)式。例如:

int i =5;

i +7;     // 這里就是一個(gè)表達(dá)式。

 

=”這個(gè)運(yùn)算符其實(shí)不屬于算術(shù)運(yùn)算,它也并非是我們數(shù)學(xué)課上講的“等于”,而是一個(gè)“賦值”運(yùn)算符,它用來將一個(gè)常量(數(shù)字、字母等)賦值給一個(gè)變量的賦值運(yùn)算符,由于我們進(jìn)行算術(shù)運(yùn)算以后,通常都會(huì)將運(yùn)算結(jié)果保存到一個(gè)變量中,所以,我把這個(gè)賦值運(yùn)算符歸類到這里。而我們?nèi)粘5?#8220;等于”運(yùn)算符是:“= =”,它屬于邏輯運(yùn)算符,我們將在下一節(jié)中講到它。

 

關(guān)于“++ —”這兩個(gè)運(yùn)算符,上圖中已經(jīng)說明了,它是對(duì)變量的對(duì)自己的自加或者自減運(yùn)算,等同于:變量 = 變量+1; 或者 變量 = 變量 1;

 

現(xiàn)在讓我們來舉幾個(gè)例子,來說明下這些算術(shù)運(yùn)算符的用法。

void  main()

{

     int x = 1;

     int y = 2;

     int z = 20;

 

     x ++;         // 等同于x = x + 1;

     y --;         // 等同于y = y - 1;

 

     z /= x;       // 等同于z = z / 1;

     printf("%d, %d, %d\n", x, y, z);    // 打印 x,y,z 的結(jié)果。

 

     z %= x;  // 計(jì)算得出 z / x 以后的余數(shù)

 

     x = x+y;

     z -= x;

     printf("%d, %d, %d\n", x, y, z);   // 打印 x,y,z 的結(jié)果。

}

 

請(qǐng)先不要看下面的截圖,先看下這個(gè)程序,分析一下,這兩次的輸出結(jié)果會(huì)是多少,然后對(duì)比下圖:

看下就算的是不是正確,如果正確了,那恭喜你,基礎(chǔ)的算術(shù)運(yùn)算就算通過了,接下來,我們需要調(diào)試這段代碼,來熟悉一些相關(guān)的匯編命令,具體操作如下圖所示:

在代碼上右擊鼠標(biāo),選擇如下命令:

 

我們來詳細(xì)分析一下我們現(xiàn)在看到的代碼:

1:    #include "stdio.h"

2:

3:    void main()

4:    {

  00401010   push        ebp

  00401011   mov         ebp,esp   ;// 將現(xiàn)有的堆棧給了EBP寄存器。

  00401013   sub         esp,4Ch   ;// 分配x4C大小的堆棧空間用來運(yùn)算。

  00401016   push        ebx

  00401017   push        esi

  00401018   push        edi       ;// 保存寄存器環(huán)境。

  00401019   lea         edi,[ebp-4Ch] ;// 這里用ebp寄存器減去一個(gè)偏移來定位我們定義的變量,

  0040101C   mov         ecx,13h   ;// 這里-4Ch是用來定位到堆棧頭,把堆棧內(nèi)容改成int3中斷以免內(nèi)存泄露。

  00401021   mov         eax,0CCCCCCCCh     ;// 以上操作是保存堆棧環(huán)境,分配堆棧空間。

  00401026   rep stos    dword ptr [edi]    ;// 在下一次課題講述函數(shù)時(shí),我們會(huì)講到,這里大家可以略過。

5:        int x = 1;

  00401028   mov    dword ptr [ebp-4],1;// [ebp-4]是我們的變量xdword ptr是用來修飾這個(gè)變量是DWORD類型(也就是整型)。

6:        int y = 2;

  0040102F   mov         dword ptr [ebp-8],2;// MOV就是匯編指令,相當(dāng)于我們C語言中"=" 賦值運(yùn)算符,它的具體用法自己百度。

7:        int z = 20;

  00401036   mov         dword ptr [ebp-0Ch],14h

8:

9:        x ++;       // 等同于x = x + 1;

  0040103D   mov         eax,dword ptr [ebp-4]

  00401040   add         eax,1; // add指令就是我們C語言的"+"運(yùn)算符,還有一個(gè)INC指令相當(dāng)于我們的"++"運(yùn)算符

  00401043   mov         dword ptr [ebp-4],eax

10:       y --;       // 等同于y = y - 1;

  00401046   mov         ecx,dword ptr [ebp-8]

  00401049   sub         ecx,1

  0040104C   mov         dword ptr [ebp-8],ecx

11:

12:       z /= x;     // 等同于z = z / 1;

  0040104F   mov         eax,dword ptr [ebp-0Ch]

  00401052   cdq

  00401053   idiv        eax,dword ptr [ebp-4]

  00401056   mov         dword ptr [ebp-0Ch],eax

13:       printf("%d, %d, %d\n", x, y, z);

  00401059   mov         edx,dword ptr [ebp-0Ch]

  0040105C   push        edx

  0040105D   mov         eax,dword ptr [ebp-8]

  00401060   push        eax

  00401061   mov         ecx,dword ptr [ebp-4]

  00401064   push        ecx

  00401065   push        offset string "%d, %d, %d\n" (0042001c)   // 傳遞參數(shù),具體規(guī)則將在下次課題“函數(shù)”中講述。

  0040106A   call        printf (004010f0)       ; // 調(diào)用printf函數(shù)打印結(jié)果

  0040106F   add         esp,10h       ; // 這里是C條用的對(duì)戰(zhàn)平衡方式。(具體將在下次課題“函數(shù)”中講述)

14:

15:       z %= x;

  00401072   mov         eax,dword ptr [ebp-0Ch]

  00401075   cdq

  00401076   idiv        eax,dword ptr [ebp-4]

  00401079   mov         dword ptr [ebp-0Ch],edx

16:

17:       x = x+y;

  0040107C   mov         edx,dword ptr [ebp-4]

  0040107F   add         edx,dword ptr [ebp-8]

  00401082   mov         dword ptr [ebp-4],edx

18:       z -= x;

  00401085   mov         eax,dword ptr [ebp-0Ch]

  00401088   sub         eax,dword ptr [ebp-4]

  0040108B   mov         dword ptr [ebp-0Ch],eax

19:       printf("%d, %d, %d\n", x, y, z);

  0040108E   mov         ecx,dword ptr [ebp-0Ch]

  00401091   push        ecx

  00401092   mov         edx,dword ptr [ebp-8]

  00401095   push        edx

  00401096   mov         eax,dword ptr [ebp-4]

  00401099   push        eax

  0040109A   push        offset string "%d, %d, %d\n" (0042001c)

  0040109F   call        printf (004010f0)

  004010A4   add         esp,10h

20:   }

  004010A7   pop         edi                     ; // 恢復(fù)寄存器環(huán)境

  004010A8   pop         esi

  004010A9   pop         ebx

  004010AA   add         esp,4Ch                 ; // 平衡堆棧

  004010AD   cmp         ebp,esp

  004010AF   call        __chkesp (00401170)     ; // DEBUG 模式程序?qū)S玫亩褩z查函數(shù)。

  004010B4   mov         esp,ebp

  004010B6   pop         ebp

004010B7   ret

 

相信你根據(jù)上述代碼中的提示,應(yīng)該能將這個(gè)匯編代碼看的差不多,當(dāng)然,看不明白也沒有關(guān)系,我們需要掌握的匯編指令及其用法很少,就下面幾個(gè):

       mov/lea:         賦值/取地址。

       add:               加法指令。

       sub:               減法指令。

       div/idiv:          除法指令。

       mul/imul:        乘法指令。

這些匯編指令的具體用法大家自己百度或者參考相關(guān)資料,這里不做詳細(xì)說明, 下面開始我們的邏輯、關(guān)系運(yùn)算。

2.         邏輯、關(guān)系運(yùn)算。

提起什么邏輯運(yùn)算,或者什么關(guān)系運(yùn)算,看名字貌似很復(fù)雜的。不過這里可能讓大家放心的是,這些運(yùn)算我們?nèi)粘I钪薪?jīng)常用到,無非就是 真的,假的,是,不是,并且,或者之類的操作。

 

用于邏輯運(yùn)算的運(yùn)算符有如下幾個(gè):

運(yùn)算符

含義

&&

 與(并且)

||

或(或者)

!

非(不是)

             

                     用于關(guān)系運(yùn)算的運(yùn)算符有如下幾個(gè):

                    

這些運(yùn)算無非就是為了判斷一個(gè)表達(dá)式成立不成立,在C語言中,只要表達(dá)式的值不為零并且符合關(guān)系運(yùn)算符的要求,那這個(gè)表達(dá)式就成立的,就可以用上述的兩種運(yùn)算符進(jìn)行比較運(yùn)算,一般情況下,這些運(yùn)算符會(huì)配合下節(jié)我們要講述的流程控制語句來使用,所以這里我就不給出具體用法的例子了,有情趣的朋友,可以繼續(xù)看下面章節(jié)中的例子

 

到現(xiàn)在我想主要的運(yùn)算我都講完了,雖然不是很詳細(xì),但是我想,只要大家堅(jiān)持努力,多多百度,這些知識(shí)一定會(huì)掌握好的。

 

小學(xué)的時(shí)候,我們學(xué)過四則運(yùn)算,在運(yùn)算的時(shí)候,遵循先乘除,后加減,有括弧的先算括弧里面的,這個(gè)規(guī)則在這里一樣使用,只不過在編程環(huán)境中,運(yùn)算符很多,所以需要有個(gè)更為詳細(xì)的運(yùn)算符優(yōu)先級(jí)表。這里我把它貼出來,但是還希望大家能夠盡量的使用括弧來讓人看的容易,以免出錯(cuò),具體優(yōu)先級(jí)表轉(zhuǎn)載如下:

更詳細(xì)的用法可以參考如下鏈接:http://www.xxlinux.com/linux/article/development/soft/20060909/4128.html

二、           三種程序流程控制結(jié)構(gòu)詳解。

有了上述的運(yùn)算,我想大家都可以寫出一些很簡單的代碼了,但是我們?cè)趯懘a的時(shí)候,肯定會(huì)遇到類似這樣的問題:

Ø         有時(shí)候,我們寫的代碼必須要在達(dá)到某種條件之后才可以執(zhí)行,否則不讓運(yùn)行。

Ø         有時(shí)候,我們寫的代碼很龐大,很羅嗦,因?yàn)樗袔追N可能需要我們來寫出幾個(gè)程序。

Ø         有時(shí)候,我們寫的代碼需要一直重復(fù)執(zhí)行直到某種條件不成立了才不執(zhí)行。

 

只要你遇到過上述的問題,那我們這節(jié)課的內(nèi)容就正是你所需要的。不多廢話,進(jìn)入正題:

1.         順序結(jié)構(gòu)

到現(xiàn)在為止,我們寫的所有的代碼都是順序結(jié)構(gòu)的,所謂順序結(jié)構(gòu),就是代碼從第一條指令開始執(zhí)行,直到執(zhí)行完最后一條。中間不會(huì)落下任何一條指令。

 

想必大家現(xiàn)在應(yīng)該能理解什么是順序結(jié)構(gòu)了,所以我不想再這里浪費(fèi)太多的篇幅,直接進(jìn)入下一小節(jié)。

2.         分支結(jié)構(gòu)

所謂分支結(jié)構(gòu),就是代碼在達(dá)到某種條件的時(shí)候,執(zhí)行某些指令,否則就執(zhí)行別的指令。

分支結(jié)構(gòu)是改變代碼執(zhí)行順序最簡單的方式,所以大家一定可以很容易的掌握它的,下面讓我們一個(gè)一個(gè)的來看。

a)        if … else結(jié)構(gòu)

這個(gè)結(jié)構(gòu)算是編程中最基礎(chǔ)的結(jié)構(gòu)了,它有三種格式,我在這里列出來,大家可以根據(jù)實(shí)際情況選擇使用哪個(gè):

第一種格式:

if (條件表達(dá)式)

{   

     //條件成立時(shí)執(zhí)行這里的語句

    

}

第二種格式:

if (條件表達(dá)式)

{   

     //條件成立時(shí)執(zhí)行這里的語句

    

}

else

{

     //條件不成立時(shí)執(zhí)行這里的語句

    

}

第三種格式:

if (條件表達(dá)式1)    

{

     //條件表達(dá)式1成立時(shí)執(zhí)行這里的語句

    

}                   

else if (條件表達(dá)式2)  // 這里的else if可以有無限多個(gè)(如果有很多個(gè)時(shí)可以參考使用switch語句)。

{ 

     //條件表達(dá)式2成立時(shí)執(zhí)行這里的語句

    

}                   

else                

{

     //條件表達(dá)式都不成立時(shí)執(zhí)行這里的語句

    

}   

 

                            為了更好的說明這個(gè)語句的用法,我舉個(gè)例子:

int MaxNum(int num001,  int num002,  int num003)

{

     if (num001 >= num002)

     {

         if (num001 >= num003)

         {

              return num001;         // num001 作為函數(shù)的結(jié)果返回出來。

         }

         else

         {

              return num003;

         }

     }

     else

     {

         if (num002 >= num003)

         {

              return num002;

         }

         else

         {

              return num003;

         }

     }

}

                     說明:上述代碼中的功能是從提供的三個(gè)數(shù):num001num002num003中選出最大的數(shù)來。

至于與這些if有關(guān)的匯編指令就是跳轉(zhuǎn),像subcmptest,之類的比較指令來影響相應(yīng)的標(biāo)志寄存器還有JE,JNE,JB,JNB之類的跳轉(zhuǎn)指令來跳轉(zhuǎn)到指定的代碼中執(zhí)行,大家可以像我們分析算術(shù)運(yùn)算的方式一樣,去調(diào)試它,去分析它,去掌握這些比較和跳轉(zhuǎn)指令的用法。

 

這里我就省下篇幅,繼續(xù)我們的switch結(jié)構(gòu)。

b)        switch … 結(jié)構(gòu)

上小節(jié)中講述的if語句,是用于少數(shù)分支時(shí)的處理語句,它寫起來方便,代碼簡潔明了,但是如果一些表達(dá)式的結(jié)構(gòu)可能有5種甚至更多種結(jié)果,需要我們分別作出不同的處理時(shí),最好的選擇就是用wsitch語句。      

先說明一下switch結(jié)構(gòu)的語法格式:

switch(表達(dá)式結(jié)果或者存放結(jié)果的變量)

{

case  結(jié)果1:

     // 當(dāng)switch后的括弧中的值是結(jié)果時(shí),就執(zhí)行這里的語句

     ...;

     break;   // break是用來跳出分支結(jié)構(gòu)的關(guān)鍵字,如果這里沒有它,只要結(jié)果是結(jié)果1,那從結(jié)果1開始向下的所有指令都會(huì)被執(zhí)行(包括結(jié)果2,結(jié)果3……)。

 

case  結(jié)果2:

     // 當(dāng)switch后的括弧中的值是結(jié)果時(shí),就執(zhí)行這里的語句

     ...;

     break;   // 如果這里沒有這個(gè)關(guān)鍵字時(shí),只要上面的結(jié)果是結(jié)果2,那從結(jié)果2開始向下的所有指令都會(huì)被執(zhí)行(包括結(jié)果3,結(jié)果4……)。

 

case  結(jié)果3:

     // 當(dāng)switch后的括弧中的值是結(jié)果時(shí),就執(zhí)行這里的語句

     ...;

     break;   // 同上

 

case  結(jié)果N:

     // 當(dāng)switch后的括弧中的值是結(jié)果N時(shí),就執(zhí)行這里的語句

     ...;

     break;  

 

default:

     // 當(dāng)switch后的括弧中的值不是上面列出的任何一個(gè)值時(shí),就執(zhí)行這里的語句

     ...;

}

 

                     這里寫的可能有點(diǎn)模糊,我給出一個(gè)代碼片段,我說明一下switch語句的用法:

PGAME_CHAR_INFO pGCI = GetCharInfoPoint();

switch (pGCI->dwZhiYe)

{

case 1:

     lstrcpyW(szTemp, L"靈劍\0");

     break;

case 2:

     lstrcpyW(szTemp, L"日羽\0");

     break;

case 3:

     lstrcpyW(szTemp, L"槍俠\0");

     break;

case 4:

     lstrcpyW(szTemp, L"薩滿\0");

     break;

case 5:

     lstrcpyW(szTemp, L"法皇\0");

     break;

case 6:

     lstrcpyW(szTemp, L"藥王\0");

     break;

default:

     lstrcpyW(szTemp, L"未知\0");

     break;

}

 

其實(shí),這個(gè)switch的匯編形式跟if結(jié)構(gòu)很像,唯一的區(qū)別就是每個(gè)分支后面都會(huì)有一個(gè)break跳轉(zhuǎn)(JMP)指令,大家可以自己試著去調(diào)試這段代碼,分析一下盡量掌握這些代碼的匯編形式。

3.         循環(huán)結(jié)構(gòu)

所謂循環(huán)結(jié)構(gòu),就是一直重復(fù)執(zhí)行某段指定的語句,知道條件不滿足了為止。

a)        for循環(huán)結(jié)構(gòu)

好,按照我們的習(xí)慣,我先寫出這個(gè)語句的基本語法結(jié)構(gòu):

for (初始值; 滿足條件; 增量)

{

     要循環(huán)的語句;

}

                            例如下面的代碼:

#include "stdio.h"

 

void main()

{

     int i = 10;

    

     // 循環(huán)打印輸出0到之間的所有自然數(shù)。

     for (int x = 0; x < i; x++)

     {

         printf("%d\n", x);

     }

}

                            打印結(jié)果如下:


                            通過這個(gè)結(jié)果和上面的語法結(jié)構(gòu),我們可以猜測出for語句的執(zhí)行流程如下圖所示:

 

左圖中描述了for語句的執(zhí)行流程,先從上面的語句中執(zhí)行到for關(guān)鍵字,然后開始初始化操作,在判斷一下循環(huán)的條件是否滿足:

 

       如果條件滿足,則繼續(xù)按照綠色的箭頭執(zhí)行,開始執(zhí)行要循環(huán)的語句,執(zhí)行完以后,會(huì)來到增量(或叫 步長)這個(gè)語句對(duì)計(jì)數(shù)器(記錄循環(huán)次數(shù)的變量)進(jìn)行增加,然后在去判斷是否滿足循環(huán)條件,如果滿足繼續(xù)執(zhí)行要循環(huán)的語句,如此循環(huán)。

 

直到條件不滿足了,按照紫色箭頭所示,跳出循環(huán)繼續(xù)執(zhí)行后面的語句。

 

       現(xiàn)在讓我們來調(diào)試跟蹤一下上面的那段程序, 確切的體會(huì)下電腦是如何執(zhí)行循環(huán)語句的:

1:    #include "stdio.h"

2:

3:    void main()

4:    {

     00401010   push        ebp

     00401011   mov         ebp,esp

     00401013   sub         esp,48h

     00401016   push        ebx

     00401017   push        esi

     00401018   push        edi

     00401019   lea         edi,[ebp-48h]

     0040101C   mov         ecx,12h

     00401021   mov         eax,0CCCCCCCCh

     00401026   rep stos    dword ptr [edi]

5:        int i = 10;

     00401028   mov         dword ptr [ebp-4],0Ah   ; // 初始化變量i

6:

7:        // 循環(huán)打印輸出0到之間的所有自然數(shù)。

8:        for (int x = 0; x < i; x++)

         0040102F   mov         dword ptr [ebp-8],0     ; // 初始化x變量

         00401036   jmp         main+31h (00401041)     ; // 強(qiáng)制跳到1041 這個(gè)位置

         00401038   mov         eax,dword ptr [ebp-8]

         0040103B   add         eax,1                       ; // 自變量加一,繼續(xù)判斷比較

         0040103E   mov         dword ptr [ebp-8],eax

         00401041   mov         ecx,dword ptr [ebp-8]   ; // 開始比較ix兩個(gè)變量

         00401044   cmp         ecx,dword ptr [ebp-4]

         00401047   jge         main+4Ch (0040105c); // 如果ebp-8得值(也就是x的值)大于等于i的值則跳出循環(huán)

9:        {

10:           printf("%d\n", x);

         00401049   mov         edx,dword ptr [ebp-8]

         0040104C   push        edx

         0040104D   push        offset string "%d\n" (0042001c)

         00401052   call        printf (00401090)       ; // 打印變量

         00401057   add         esp,8

11:       }

         0040105A   jmp         main+28h (00401038)         ; // 調(diào)回去,累加器加一,然后繼續(xù)循環(huán)

12:   }

     0040105C   pop         edi           ; // 退出循環(huán),恢復(fù)上下文環(huán)境。

     0040105D   pop         esi

     0040105E   pop         ebx

     0040105F   add         esp,48h       ; // 平衡堆棧。

     00401062   cmp         ebp,esp

     00401064   call        __chkesp (00401110)

     00401069   mov         esp,ebp

     0040106B   pop         ebp

     0040106C   ret

好,到這里相信大家對(duì)for循環(huán)已經(jīng)明白了,其實(shí)那個(gè)語法結(jié)構(gòu)中的什么初始化,什么增量,無所謂的,只要明白了它的執(zhí)行順序,然后寫上相應(yīng)的代碼就可以了,接下來就是多多使用它,熟練它就好。

b)        while循環(huán)結(jié)構(gòu)

for循環(huán)相比,while有很多的優(yōu)點(diǎn),當(dāng)然它也簡單的一塌糊涂。我直截了當(dāng)?shù)恼f下這個(gè)while語句的兩種寫法和它們之間的區(qū)別:

    

按照 for 語句中圖的分析方法,可以看出while的兩種寫法都比較容易,它們的區(qū)別也很明顯,一個(gè)先判斷下是否應(yīng)該循環(huán),另一個(gè)就不管三七二十一,先執(zhí)行一遍循環(huán)體再說……

 

       這個(gè)while語句比較容易,而且與for可以兼容,所以這里我就不再浪費(fèi)篇幅去分析它了。大家如果有想去可以自己分析一下,看下它們的匯編模樣。

 

       到這里,我們這一小節(jié)的所有知識(shí)點(diǎn)都已經(jīng)說完了,希望大家能靈活運(yùn)用它們,根據(jù)實(shí)際情況,它們之間是可以嵌套的,比如if語句中使用for語句,for語句中使用一個(gè)switch語句,等等。

三、           養(yǎng)成良好的代碼編寫風(fēng)格。

引用一下高質(zhì)量C++/C編程指南:http://man.chinaunix.net/develop/c&c++/c/c.htm(只看能看懂的部分)

四、           結(jié)束語

通過本次專題的學(xué)習(xí),我相信大家可以寫一個(gè)很基礎(chǔ)的代碼了,再配合我們下節(jié)課要講述的內(nèi)容,我們的基礎(chǔ)部分就要結(jié)束了。

 

多寫程序,多看人家的程序,多作一些C語言的作業(yè),靈活一下。

 

Feedback

# re: 2、數(shù)據(jù)的存儲(chǔ)空間 ------ 變量  回復(fù)  更多評(píng)論   

2009-04-17 19:26 by wahaha
講的很不錯(cuò),希望繼續(xù),關(guān)注ING。。。

# re: 2、數(shù)據(jù)的存儲(chǔ)空間 ------ 變量  回復(fù)  更多評(píng)論   

2009-06-03 20:49 by cntrump
好像不通用吧,我在VC6下編譯通過,運(yùn)行時(shí)程序崩潰

# re: 2、數(shù)據(jù)的存儲(chǔ)空間 ------ 變量  回復(fù)  更多評(píng)論   

2009-06-09 13:53 by bester
@cntrump
release 編譯運(yùn)行就應(yīng)該OK了。

# re: 2、數(shù)據(jù)的存儲(chǔ)空間 ------ 變量  回復(fù)  更多評(píng)論   

2009-09-08 15:31 by 迷途流浪
變量聲明格式應(yīng)該包括:數(shù)據(jù)存儲(chǔ)方式
說法要嚴(yán)謹(jǐn)
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            激情成人综合| 亚洲精品日韩激情在线电影| 国产精品xxxxx| 国一区二区在线观看| 一本久久a久久免费精品不卡| 久久精品九九| 亚洲永久免费视频| 欧美色图首页| 亚洲激情av在线| 巨胸喷奶水www久久久免费动漫| 亚洲视频导航| 欧美视频一区二区三区…| 亚洲人精品午夜在线观看| 美玉足脚交一区二区三区图片| 欧美午夜一区二区三区免费大片| 亚洲欧洲三级| 亚洲国产精品一区二区久| 欧美一区二区三区喷汁尤物| 国产乱码精品| 久久精品国产精品| 久久精品女人| 在线视频国产日韩| 欧美成人午夜剧场免费观看| 久久漫画官网| 亚洲精品影视| 99re6这里只有精品视频在线观看| 欧美大片网址| 欧美激情一区二区三区在线视频观看| 久久高清一区| 激情综合亚洲| 欧美二区在线看| 欧美freesex交免费视频| 亚洲区在线播放| 亚洲精品一区中文| 国产精品福利在线| 国产精品a久久久久| 亚洲综合色丁香婷婷六月图片| 亚洲社区在线观看| 国产在线精品成人一区二区三区| 久久影视三级福利片| 欧美成人精品一区二区| 夜夜嗨av色一区二区不卡| 一区二区日韩| 精品999网站| 亚洲人成网在线播放| 国产精品二区在线| 猫咪成人在线观看| 欧美日本一区二区视频在线观看 | 欧美日韩一本到| 国产精品99久久久久久白浆小说| 亚洲婷婷在线| 亚洲国产欧美久久| 亚洲天堂网站在线观看视频| 国产一区自拍视频| 亚洲欧洲一区二区在线播放| 欧美视频免费在线观看| 久久精品国产欧美激情| 美女爽到呻吟久久久久| 亚洲嫩草精品久久| 麻豆freexxxx性91精品| 亚洲欧美日韩在线| 免费不卡在线视频| 久久成人在线| 欧美日韩美女在线| 免费在线成人| 国产视频不卡| 中文日韩电影网站| 亚洲美女淫视频| 久久国内精品视频| 亚洲宅男天堂在线观看无病毒| 久久精品一区二区三区四区 | 欧美激情一区二区三区在线视频观看 | 亚洲国产精品t66y| 国产一级久久| 亚洲一区在线观看免费观看电影高清| 亚洲国产欧美在线人成| 亚洲一区免费| 一本不卡影院| 美女国内精品自产拍在线播放| 性做久久久久久| 欧美三级午夜理伦三级中文幕| 欧美福利电影在线观看| 国模一区二区三区| 亚洲私人影院| 亚洲福利免费| 欧美激情精品久久久六区热门| 亚洲国产日韩欧美综合久久| 国产日本欧美视频| 夜夜狂射影院欧美极品| 亚洲欧洲精品成人久久奇米网 | 亚洲欧美日韩精品久久久久| 亚洲美女毛片| 欧美高清视频在线播放| 欧美电影在线播放| 一区二区视频免费在线观看 | 国产精品高清在线观看| 亚洲日本中文字幕| 一本色道精品久久一区二区三区| 欧美高清视频在线| 欧美激情一区二区三区高清视频| 黑人操亚洲美女惩罚| 欧美综合77777色婷婷| 久久精品国产精品亚洲| 国产亚洲毛片| 久久久久网站| 亚洲激情在线| 亚洲天堂视频在线观看| 国产精品久久久久aaaa九色| 亚洲影院免费| 久久久精品一品道一区| 伊人久久大香线| 美女黄网久久| 亚洲卡通欧美制服中文| 亚洲欧美日韩国产一区| 国产亚洲第一区| 久久久噜噜噜久久中文字幕色伊伊 | 亚洲黄色片网站| 欧美高清视频在线播放| av成人毛片| 久久精品最新地址| 在线看欧美视频| 欧美日本三级| 性欧美超级视频| 免费美女久久99| 中文亚洲免费| 国产一区二区三区最好精华液 | 中国av一区| 国产精品jizz在线观看美国| 香蕉av福利精品导航| 美女视频网站黄色亚洲| 亚洲精品在线二区| 国产精品色午夜在线观看| 久久电影一区| 日韩一级大片在线| 久久久在线视频| av成人激情| 在线高清一区| 国产精品免费观看视频| 蜜臀av性久久久久蜜臀aⅴ| 在线视频精品一区| 久久久蜜臀国产一区二区| 日韩午夜在线观看视频| 国产午夜精品视频| 欧美精品三级日韩久久| 欧美诱惑福利视频| 日韩亚洲欧美综合| 欧美日韩一二三区| 久久婷婷久久一区二区三区| 嫩草成人www欧美| 亚洲欧美久久久| 亚洲国产三级网| 国产欧美亚洲一区| 欧美日韩国产二区| 久久综合九色欧美综合狠狠| 日韩视频在线一区二区| 免费欧美视频| 亚洲日本在线视频观看| 国产日本欧洲亚洲| 欧美日韩专区| 欧美激情小视频| 久久欧美中文字幕| 亚洲香蕉成视频在线观看| 亚洲国产1区| 美女91精品| 久久手机免费观看| 欧美在线不卡| 欧美一区激情| 亚洲无线视频| 一区二区高清视频| 亚洲国产精品日韩| 激情婷婷欧美| 国产日本亚洲高清| 欧美性开放视频| 欧美日韩国内自拍| 欧美电影在线观看完整版| 久久蜜桃香蕉精品一区二区三区| 亚洲欧美变态国产另类| 亚洲视频成人| 国产精品99久久99久久久二8 | 国产精品久久久久久久久| 欧美freesex交免费视频| 久久国产免费看| 欧美在线啊v| 久久久精品五月天| 久久精品官网| 久久综合电影| 欧美国产三区| 欧美日韩国产在线一区| 欧美色另类天堂2015| 欧美日韩亚洲一区二| 国产精品伦理| 国产一区二区三区在线播放免费观看| 国产主播一区二区三区| 狠狠色综合一区二区| 亚洲电影下载| 99综合精品| 欧美在线不卡| 欧美成人在线影院| 亚洲高清影视| 亚洲一区二区成人在线观看|