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

建議7-2:避免在嵌套的代碼塊之間使用相同的變量名

當一個作用域嵌套在另一個作用域內部時,我們應該避免在這兩個作用域中使用相同的變量名稱。例如,如果某些局部變量位于一個全局變量的子作用域中,那么這些局部變量都不應該與這個全局變量同名。

例如下面的示例代碼:


int height = 100;
double mtocm( double value )
{
    double height=0;
    height=value*height;
    return height;
}

在上面的代碼中,首先聲明了一個int類型的全局變量height,同時又在mtocm函數里聲明了一個與全局變量名稱相同的double類型的局部變量height。最后,我們希望將value*height(全局變量)的值賦給double類型的局部變量height,并返回。

當執行“mtocm(1.78)”語句時,問題發生了。因為雖然C語言允許在同一源文件中全局變量和局部變量同名,但在局部變量的作用域內,全局變量將不起任何作用。所以,執行語句“mtocm(1.78)”返回的結果將會是0。因此,我們必須將全局變量名稱與局部變量名稱區分開,如下面的代碼所示:


int g_height = 100;
double mtocm( double value )
{
    double height=0;
    height=value*g_height;
    return height;
}

現在,再執行語句“mtocm(1.78)”時,它將返回正確的結果。

除此之外,如果一個代碼塊位于其他代碼塊的內部,同樣不應該在此代碼塊中聲明與外層代碼塊中的任何變量具有相同名稱的變量。

主站蜘蛛池模板: 平昌县| 穆棱市| 镇平县| 土默特右旗| 凭祥市| 曲靖市| 德钦县| 安龙县| 株洲市| 大庆市| 龙江县| 手机| 驻马店市| 淮安市| 临潭县| 山阳县| 美姑县| 通化县| 阳东县| 福安市| 和静县| 九寨沟县| 金门县| 渭源县| 周宁县| 巴中市| 南汇区| 左贡县| 偃师市| 渑池县| 高雄市| 集贤县| 济阳县| 衡东县| 仁怀市| 都匀市| 晋中市| 汉寿县| 沙雅县| 朔州市| 双鸭山市|