- 编写高质量代码:改善C程序代码的125个建议
- 马伟 著
- 469字
- 2025-03-16 17:14:06
建议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)”时,它将返回正确的结果。
除此之外,如果一个代码块位于其他代码块的内部,同样不应该在此代码块中声明与外层代码块中的任何变量具有相同名称的变量。