機(jī)電之家資源網(wǎng)
單片機(jī)首頁|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
學(xué)C51的基礎(chǔ) 8 《 控制流程語句 》 作者[cmh]©
學(xué)C51的基礎(chǔ) 8 《 控制流程語句 》 作者[cmh]©
 更新時間:2008-8-17 16:34:11  點擊數(shù):48
【字體: 字體顏色

                    .
               case 常量n;
                    語句n或空;
               default:
                    語句n+1或空;
          }

    執(zhí)行switch開關(guān)語句時, 將變量逐個與case后的常量進(jìn)行比較, 若與其中一個相等, 則執(zhí)行該常量下的語句, 若不與任何一個
常量相等, 則執(zhí)行default 后面的語句。
    注意:
    1. switch中變量可以是數(shù)值, 也可以是字符。
    2. 可以省略一些case和default。
    3. 每個case或default后的語句可以是語句體, 但不需要使用"{"和"}"括起來。

    下例的switch中變量為整數(shù)型。

    例19:

     main()
     {
          int test;
          for(test=0; test<=10; test++)
          {
               switch(test)                  /*變量為整型數(shù)的開關(guān)語句*/
               {
                    case 1:
                         printf("%d\n", test);
                         break;              /*退出開關(guān)語句*/
                    case 2:
                         printf("%d\n", test);
                         break;
                    case 3:
                         printf("%d\n", test);
                         break;
                    default:
                         puts("Error");
                         break;
               }
          }
     }

    下例的switch中變量為字符型。

    例20:

     #include<stdio.h>
     main()
     {
          char c;
          while(c!=27)                  /*循環(huán)直到按Esc鍵結(jié)束*/
          {
               c=getch();               /*從鍵盤不回顯接收一個字符*/
               switch(c)
               {
                    case 'A':           /*接收的字符為'A'*/
                         putchar(c);
                         break;         /*退出開關(guān)語句*/
                    case 'B':
                         putchar(c);
                         break;
                    default:            /*接收的字符非'A'和'B'*/
                         puts("Error");
                         break;
               }
          }
     }


    1.3.4 break、continue和goto語句

    1.3.4.1 break語句
    break語句通常用在循環(huán)語句和開關(guān)語句中。當(dāng)break用于開關(guān)語句switch中時, 可使程序跳出switch而執(zhí)行switch以后的語
句; 如果沒有break語句, 則將成為一個死循環(huán)而無法退出。break在switch 中的用法已在前面介紹開關(guān)語句時的例子中碰到,這
里不再舉例。
    當(dāng)break語句用于do-while、for、while循環(huán)語句中時, 可使程序終止循環(huán)而執(zhí)行循環(huán)后面的語句, 通常break語句總是與if
語句聯(lián)在一起。 即滿足條件時便跳出循環(huán)。

    例19:

     main()
     {
          int i=0;
          char c;
          while(1)                 /*設(shè)置循環(huán)*/
          {
               c='\0';             /*變量賦初值*/
               while(c!=13&&c!=27) /*鍵盤接收字符直到按回車或Esc鍵*/
               {
                    c=getch();
                    printf("%c\n", c);
               }
               if(c==27)
                    break;          /*判斷若按Esc鍵則退出循環(huán)*/
               i++;
               printf("The No. is %d\n", i);
          }
          printf("The end");
     }

    注意:
    1. break語句對if-else的條件語句不起作用。
    2. 在多層循環(huán)中, 一個break語句只向外跳一層。

    1.3.4.2 continue 語句
    continue語句的作用是跳過循環(huán)本中剩余的語句而強行執(zhí)行下一次循環(huán)。
    continue語句只用在for、while、do-while等循環(huán)體中,常與if條件語句一起使用,用來加速循環(huán)。

    例20:

     main()
     {
          char c;
          while(c!=0X0D)      /*不是回車符則循環(huán)*/
          {
               c=getch();
               if(c==0X1B)
                    continue; /*若按Esc鍵不輸出便進(jìn)行下次循環(huán)*/
               printf("%c\n", c);
          }
     }

    1.3.4.3 goto 語句
    goto語句是一種無條件轉(zhuǎn)移語句, 與BASIC中的goto語句相似。goto 語句的使用格式為:

    goto  標(biāo)號;

    其中標(biāo)號是Turbo C2.0中一個有效的標(biāo)識符, 這個標(biāo)識符加上一個":" 一起出現(xiàn)在函數(shù)內(nèi)某處, 執(zhí)行g(shù)oto語句后, 程序?qū)⑻D(zhuǎn)
到該標(biāo)號處并執(zhí)行其后的語句。另外標(biāo)號必須與goto語句同處于一個函數(shù)中, 但可以不在一個循環(huán)層中。通常 goto 語句與if條件
語句連用, 當(dāng)滿足某一條件時, 程序跳到標(biāo)號處運行。
    goto語句通常不用, 主要因為它將使程序?qū)哟尾磺? 且不易讀, 但在多層嵌套退出時, 用goto語句則比較合理。
    例19用goto語句時變?yōu)?

    例21:

     main()
     {
          int i=0;
          char c;
          while(1)
          {
               c='\0';
               while(c!=13)
               {
                    c=getch();
                    if(c==27)
                      goto quit;
                    printf("%c\n", c);
               }
               i++;
               printf("The No. is %d\n", i);
          }
          quit:
               printf("The end");
     }
  • 上一篇: 學(xué)C51的基礎(chǔ) 9 《 指針、結(jié)構(gòu)、聯(lián)合和枚舉 》 作者[cmh]©
  • 下一篇: 學(xué)C51的基礎(chǔ)7《 文件的輸入輸出函數(shù) 》 作者[cmh]©;
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機(jī)電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機(jī)電之家,機(jī)電之家將及時作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1