快速的問題,是它很好的做法使用這種初始化所有「空白或空」的變量時,它並沒有攜帶正或負的值,例如:變量初始化(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++的方法是**總是**初始化變量。 –