最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

深入理解goto語(yǔ)句的替代實(shí)現(xiàn)方式分析

 更新時(shí)間:2013年05月23日 11:14:18   作者:  
本篇文章是對(duì)goto語(yǔ)句的替代實(shí)現(xiàn)方式進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
曾幾何時(shí),goto是多么的讓牛人綻放他們高超的精湛技術(shù)
曾幾何時(shí),goto又變成了萬(wàn)惡之首
曾幾何時(shí),goto只在教科書(shū)中的示例才會(huì)出現(xiàn)
有太多的理由不讓用goto,但有時(shí),我們又想使用goto的功能,怎么辦?
用try/catch/finally便可實(shí)現(xiàn)同等于goto的功能,來(lái)看二個(gè)示例:
復(fù)制代碼 代碼如下:

try {
      // operation one
      if (failed) {
            throw Exception;
      }
      // operation two
      if (failed) {
            throw Exception;
      }
      // operation three
      if (failed) {
           throw Exception;
      }
} catch (Exception e) {
      // do something when cases failed
}

和:
復(fù)制代碼 代碼如下:

try {
     // operation one
     if (failed) {
         return;
     }
     // operation two
     if (failed) {
         return;
     }
      // operation three
      if (failed) {
          return;
      }
} finally {
      // do something when failed
}

以上二段都等同于:
復(fù)制代碼 代碼如下:

       // operation one
       if (failed) {
           goto when_failed;
       }
       // operation one
       if (failed) {
           goto when_failed;
       }
       // operation one
       if (failed) {
           goto when_failed;
       }
when_failed:
       // do something when failed

用異常的方式有些暴力,但確實(shí)能正確的幫助實(shí)現(xiàn)類似goto的功能;用return和finally雖不是很暴力,但是比較難控制,因?yàn)樯婕暗絩eturn語(yǔ)句,它會(huì)在finally塊執(zhí)行后得以執(zhí)行,所以如果不想退出程序的話,這個(gè)方法還不如用異常來(lái)控制。
另外,break, continue也是比較強(qiáng)大的跳轉(zhuǎn)語(yǔ)句,特別是break label和continue label,可以跳出一層循環(huán)或是多層循環(huán); 但是要注意一點(diǎn)的是break只能在循環(huán)語(yǔ)句和switch語(yǔ)句中使用,continue只能在循環(huán)語(yǔ)句中使用。所以它們的局限性也很大。
這個(gè)小示例說(shuō)明,goto不單單是一個(gè)語(yǔ)句,它是一種解決問(wèn)題的思路和編程習(xí)慣,習(xí)慣了它的人,或者是想用它的人,即使不用goto也會(huì)寫(xiě)出類似goto邏輯出來(lái)。它的優(yōu)點(diǎn)是會(huì)更容易的幫助找出解決方案。它的缺點(diǎn)也是眾人皆知。但我們要避免的不單單是一個(gè)goto語(yǔ)句,而是這種“跳轉(zhuǎn)式”的解決思路和編程習(xí)慣。

相關(guān)文章

  • C++文件輸入輸出fstream使用方法

    C++文件輸入輸出fstream使用方法

    C++標(biāo)準(zhǔn)庫(kù)提供了<fstream>頭文件,其中包含了用于文件輸入輸出的相關(guān)類和函數(shù),本文將詳細(xì)介紹<fstream>頭文件的使用方法,包括函數(shù)原型、打開(kāi)文件、讀取和寫(xiě)入文件、以及錯(cuò)誤處理等注意事項(xiàng),感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • CreateCompatibleDC()函數(shù)案例詳解

    CreateCompatibleDC()函數(shù)案例詳解

    這篇文章主要介紹了CreateCompatibleDC()函數(shù)案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • Visual Studio Code運(yùn)行程序時(shí)輸出中文成亂碼問(wèn)題及解決方法

    Visual Studio Code運(yùn)行程序時(shí)輸出中文成亂碼問(wèn)題及解決方法

    這篇文章主要介紹了解決Visual Studio Code運(yùn)行程序時(shí)輸出中文成亂碼問(wèn)題,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-03-03
  • C語(yǔ)言宏函數(shù)container of()簡(jiǎn)介

    C語(yǔ)言宏函數(shù)container of()簡(jiǎn)介

    這篇文章介紹了C語(yǔ)言宏函數(shù)container of(),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • C語(yǔ)言輾轉(zhuǎn)相除法求2個(gè)數(shù)的最小公約數(shù)

    C語(yǔ)言輾轉(zhuǎn)相除法求2個(gè)數(shù)的最小公約數(shù)

    輾轉(zhuǎn)相除法最大的用途就是用來(lái)求兩個(gè)數(shù)的最大公約數(shù)。下面通過(guò)本文給大家介紹C語(yǔ)言輾轉(zhuǎn)相除法求2個(gè)數(shù)的最小公約數(shù),非常不錯(cuò),感興趣的朋友一起看看吧
    2016-12-12
  • C語(yǔ)言static修飾函數(shù)詳細(xì)解析

    C語(yǔ)言static修飾函數(shù)詳細(xì)解析

    以下是對(duì)C語(yǔ)言中的static修飾函數(shù)進(jìn)行了詳細(xì)的分析介紹,需要的朋友可以過(guò)來(lái)參考下
    2013-08-08
  • c語(yǔ)言中的移位運(yùn)算符

    c語(yǔ)言中的移位運(yùn)算符

    這篇文章主要介紹了c語(yǔ)言中的移位運(yùn)算符,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • include包含頭文件的語(yǔ)句中,雙引號(hào)和尖括號(hào)的區(qū)別(詳解)

    include包含頭文件的語(yǔ)句中,雙引號(hào)和尖括號(hào)的區(qū)別(詳解)

    下面小編就為大家?guī)?lái)一篇include包含頭文件的語(yǔ)句中,雙引號(hào)和尖括號(hào)的區(qū)別(詳解)。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-07-07
  • C語(yǔ)言實(shí)現(xiàn)紙牌游戲(小貓釣魚(yú))

    C語(yǔ)言實(shí)現(xiàn)紙牌游戲(小貓釣魚(yú))

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)紙牌游戲,小貓釣魚(yú)游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-10-10
  • C++嵌入式內(nèi)存管理詳情

    C++嵌入式內(nèi)存管理詳情

    這篇文章主要介紹了C++嵌入式內(nèi)存管理,是對(duì)上一篇內(nèi)存的一個(gè)補(bǔ)充,主要講解Linux中的內(nèi)存;這部分對(duì)于一些端側(cè)部署的伙伴來(lái)說(shuō)比較重要,推薦針對(duì)不同的板子,下面來(lái)看看詳細(xì)內(nèi)容吧,需要的朋友可以參考一下
    2021-12-12

最新評(píng)論

高安市| 北京市| 广德县| 闽侯县| 郧西县| 汉沽区| 肇庆市| 高陵县| 乌恰县| 嫩江县| 龙南县| 临朐县| 南昌市| 莱阳市| 双鸭山市| 营山县| 南宁市| 成都市| 建始县| 潢川县| 甘南县| 南投市| 弥渡县| 邹平县| 桐庐县| 元朗区| 香格里拉县| 凉城县| 福贡县| 平顺县| 桃江县| 永胜县| 齐齐哈尔市| 柳江县| 威信县| 临邑县| 得荣县| 梅河口市| 天等县| 元氏县| 赤壁市|