快速的问题,是它很好的做法使用这种初始化所有“空白或空”的变量时,它并没有携带正或负的值,例如:变量初始化(C#和C++)
int value = 0;
而不是:
int value;
我接受的Visual Studio编译器,从我的理解,如果他们没有事先初始化,但我很好奇,在默认情况下自动初始化变量为0什么是最好的做法是和什么潜在危害(如果有的话)。
虽然我特指VS环境中的C#和C++语言,但这个问题对任何语言和编译器都是开放的。
快速的问题,是它很好的做法使用这种初始化所有“空白或空”的变量时,它并没有携带正或负的值,例如:变量初始化(C#和C++)
int value = 0;
而不是:
int value;
我接受的Visual Studio编译器,从我的理解,如果他们没有事先初始化,但我很好奇,在默认情况下自动初始化变量为0什么是最好的做法是和什么潜在危害(如果有的话)。
虽然我特指VS环境中的C#和C++语言,但这个问题对任何语言和编译器都是开放的。
在程序后面初始化变量以防止未定义行为总是一个好习惯。一些后来的编译器可能会为你做这件事,但在较低的杠杆没有定义一个变量不能被编译器捕获,并可能导致一些非常痛苦的头痛。如果你有变量的大规模列表我一般是用一个大等于声明:
int a,b,c,d,g;
a=b=c=d=g=0; //set all to zero
它除了更大的C++理念,以始终保持有所有时间存储在您的变量的值。
初始化语句为int value = 0;
更好,好的编程习惯有两个原因。
由于未初始化变量它从可读性的角度
它删除的问题可能更好(不是这种情况,而是一种实践,以避免在其他许多情况下问题,当需要初始化)。
在Visual Studio编译器,从我的理解,如果他们没有手
并不总是初始化之前自动初始化默认变量为0。
范围问题。该类的私有成员会自动分配其默认值,但本地范围的变量(即在方法中声明的)不是。 out
参数不会自动分配。值和引用参数始终被赋值(它们要么传入一个值,要么声明默认值)。
C#会让你分配一个值后的声明,但将不会让你引用一个未分配变量。
因此,必须初始化本地范围内的任何东西。全局变量会发生什么情况,因为它们超出范围? – wilbomc
在C#中,变量总是在类中声明* C#没有全局变量。 –
在C++中,原始类型数据成员**不会被初始化为零。访问不会进入它。这包括指针。牢记这一点非常重要。 – juanchopanza
让我们坚持使用c + +和C#,我们会吗? –
C++的方法是**总是**初始化变量。 –