3

快速提问,当它不必携带正值或负值时,初始化所有“空白或空”变量是否是一种好习惯,例如使用这个:

int value = 0;

代替:

int value;

我接受 Visual Studio 编译器,据我了解,如果变量没有事先初始化,默认情况下会自动将变量初始化为 0,但我很好奇最佳实践是什么以及潜在的危险(如果有的话)是什么。

尽管我特别指的是 VS 环境中的 C# 和 C++ 语言,但这个问题对所有语言和编译器都是开放的。

4

3 回答 3

7

据我了解,Visual Studio 编译器默认情况下会自动将变量初始化为 0,如果它们没有事先初始化的话

不总是。

范围很重要。类的私有成员会自动分配它们的默认值,但本地范围的变量(即在方法中声明)则不会。 out参数不会自动分配。Value 和 Reference 参数总是被赋值(它们要么传入一个值,要么声明一个默认值)。

C# 将允许您在声明后分配一个值,但不允许您引用未分配的变量。

于 2012-12-19T04:11:03.547 回答
3

初始化变量以防止稍后在程序中出现未定义的行为始终是一种好习惯。一些后来的编译器可能会为您执行此操作,但在较低级别未定义变量不能被编译器捕获,并且可能导致一些非常痛苦的头痛。如果您有大量变量列表,我通常使用大等于语句:

int a,b,c,d,g;
a=b=c=d=g=0; //set all to zero

始终将值始终存储在变量中是更大的 C++ 哲学的一部分

于 2012-12-19T04:10:03.220 回答
1

由于两个原因,初始化语句int value = 0;更可取和良好的编程习惯。

  1. 从可读性的角度来看它更好

  2. 它消除了由于未初始化变量而导致问题的可能性(在这种情况下不是,而是在许多其他需要初始化的情况下避免出现问题的做法)。

于 2012-12-19T04:11:01.243 回答