- 編寫高質量代碼:改善C程序代碼的125個建議
- 馬偉 著
- 469字
- 2019-01-01 01:33:14
建議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)”時,它將返回正確的結果。
除此之外,如果一個代碼塊位于其他代碼塊的內部,同樣不應該在此代碼塊中聲明與外層代碼塊中的任何變量具有相同名稱的變量。
推薦閱讀
- Drupal 8 Blueprints
- 數據結構和算法基礎(Java語言實現)
- Power Up Your PowToon Studio Project
- Windows系統管理與服務配置
- 軟件測試工程師面試秘籍
- Java Web基礎與實例教程
- Node學習指南(第2版)
- RubyMotion iOS Develoment Essentials
- Hacking Android
- H5+移動營銷設計寶典
- Python全棧開發:基礎入門
- Oracle Database XE 11gR2 Jump Start Guide
- Learning PowerShell DSC(Second Edition)
- Nginx Troubleshooting
- 西門子PLC 200/300/400應用程序設計實例精講(第2版)