[問題] C陣列一定要設定初值嗎

看板C_and_CPP作者 (ice)時間10年前 (2013/12/30 23:46), 編輯推噓2(2010)
留言12則, 6人參與, 最新討論串1/1
小弟用C寫了一個程式 計算矩陣值 寫一程式,提示使用者輸入三組數字,每組有5個double值,程式工作如下 a.將資料存於3x5的陣列中 b.計算每組總和 ps: 以上每題使用一函數來處理 我寫出來了但是第2個函數 裡面的計算總合矩陣sum矩陣 如果我不設定初值 他執行出來的值 就會出現錯誤 以題目3*5陣列 假設我輸入數字1~15 理論上來說第2列的總和應該是40 但是他會變成55 不過在我設定矩陣初值之後 他就正常了 下面是程式碼 不知道是否有大大能幫我解惑一下 謝謝了~ #include<stdio.h> //***************************寫一程式,提示使用者輸入三組數字,每組有5個double 值,程式工作如下 ************// void main(void) { double A[3][5]; void func1(double A[3][5]); void func2(double A[3][5]); printf("Please enter three group double value\n"); func1(A); func2(A); } //************將資料存於3x5的陣列中**************// void func1(double A[3][5]) { int i,j; for(i=0;i<3;i++) { for(j=0;j<5;j++) { scanf("%lf", &A[i][j]); printf("%lf ",A[i][j]); } printf("\n"); } } //***********b.計算每組總和 *********************// void func2(double A[3][5]) { double sum[3];//={0,0,0}; int i,j; for(i=0;i<3;i++) { for(j=0;j<5;j++) { sum[i]=A[i][j]+ sum[i]; } printf("The sum of row is %lf\n",sum[i]); } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.25.194.119 ※ 編輯: leo19866 來自: 114.25.194.119 (12/30 23:50) ※ 編輯: leo19866 來自: 114.25.194.119 (12/30 23:50)

12/30 23:53, , 1F
不用啊,只是會有未定義的值作初值 :)
12/30 23:53, 1F

12/31 00:00, , 2F
我查到的也是說未設初值會定義成0
12/31 00:00, 2F

12/31 00:02, , 3F
但是算出來第2列的總和11加到15卻是55
12/31 00:02, 3F

12/31 00:33, , 4F
那就是人家的編譯器跟你不一樣啊XD
12/31 00:33, 4F

12/31 00:33, , 5F
0也是一種未定義的值,但沒有一定給你0。
12/31 00:33, 5F

12/31 00:40, , 6F
未設初值不一定為 0, 要看是哪種變數. 你這情況是未定義行為
12/31 00:40, 6F

12/31 04:39, , 7F
double A[3][5] = {}; 這個才會把未設初值的設為 0
12/31 04:39, 7F

12/31 04:39, , 8F
其他的... 未定義行為
12/31 04:39, 8F

12/31 09:06, , 9F
早期的版本似乎不用 可以動態填入
12/31 09:06, 9F

12/31 10:25, , 10F
請教一下動態填入的意思是什麼?
12/31 10:25, 10F

12/31 10:25, , 11F
@AnyaAlstreim: C++ 才能這樣寫. C 要 {0}
12/31 10:25, 11F

01/02 18:33, , 12F
未設就未設幹嘛把他當0 真的要0自己給就好囉
01/02 18:33, 12F
文章代碼(AID): #1ImPLhmE (C_and_CPP)