C語言中數(shù)組的默認初值問題?
普通數(shù)組沒有賦初值,默認的數(shù)組元素值是隨機數(shù),不是0。 如果在定義數(shù)組時,數(shù)據(jù)類型前面加上關(guān)鍵字static,數(shù)組變成了靜態(tài)數(shù)組;或者把數(shù)組定義在函數(shù)的外面,成為全局變量數(shù)組,這時數(shù)組元素的值自動賦值為0。 例子: #includeint main(void) { int m = 0; static int n; int a = 5, b = 6, c = 7, d = 8; int k = ((m = a>b) && (n = c>d)) printf("k = %d, m = %d, n = %d\n", k, m, n); return 0; } 輸出結(jié)果為:k = 0, m = 0, n = 0; 當變量用static修飾,但是沒有賦初始值的時候,編譯器會自動給它賦值為0.但是如果不用static 只是 int n;這樣定義的話,這個值就是未知的,因為編譯器會給這個變量分配一塊4字節(jié)的地址空間,這個地址里面的值就是n的值。