官术网_书友最值得收藏!

4.12 goto/continue/break語句

自從提倡結構化程序設計以來,goto就成了有爭議的語句。首先,由于goto語句可以實現無條件跳轉,如果不加限制,它的確會破壞結構化程序設計風格。其次,goto語句經常帶來錯誤和隱患。它可能跳過某些對象的構造、變量的初始化、重要的計算等語句,如示例4-16所示。

示例4-16

                goto state;
                String s1,s2;      // 被goto跳過
                int sum=0;      // 被goto跳過
                …
                state:
                …

如果編譯器不能發覺此類錯誤,每用一次goto語句都可能留下隱患。

很多人建議廢除C++/C的goto語句,以絕后患。但老實說,錯誤是程序員自己造成的,不是goto的過錯。(你不用它,難道它還會跳出來騷擾你不成?)goto語句至少有一處可顯神通,它能從多層嵌套的循環體中“嗖”地一下子跳到外面,用不著寫很多次的break語句,從而提高了效率,見示例4-17。

示例4-17

                for(…)
                {…
                    for(…)
                    {…
                        for(…)
                        {…
                            goto error;
                        }
                    }
                }
                error:// 錯誤處理代碼

所以我們主張少用、慎用goto語句,而不是禁用。

主站蜘蛛池模板: 江孜县| 翁牛特旗| 滁州市| 子洲县| 仙桃市| 时尚| 黄浦区| 监利县| 祁连县| 同德县| 富民县| 大洼县| 余姚市| 邮箱| 河西区| 望都县| 华亭县| 丹巴县| 察雅县| 安国市| 天柱县| 大足县| 宁乡县| 鱼台县| 赣州市| 萍乡市| 尼勒克县| 云龙县| 莱芜市| 平泉县| 隆昌县| 华安县| 邯郸市| 广南县| 青田县| 和硕县| 洞口县| 灵台县| 岳西县| 理塘县| 齐齐哈尔市|