Re: [問題] pow的問題in C

看板Programming作者時間18年前 (2006/10/07 02:01), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串3/4 (看更多)
※ 引述《bizza.bbs@ptt.cc (一個人的行李)》之銘言: > int a[10][4]; > for(int i=0;i<10;i++) > { > for(int j=0;j<4;j++) > { > a[i][j]=(1+i)*pow(10 ,j); > printf("%d\t",a[i][j]); > } > printf("\n"); > } > 用上面的程式可以跑出下面這個結果 > 1 10 100 1000 > 2 20 200 2000 > 3 30 300 3000 > 4 40 400 4000 > 5 50 500 5000 > 6 60 600 6000 > 7 70 700 7000 > 8 80 800 8000 > 9 90 900 9000 > 10 100 1000 10000 > 但是我的問題是 它在debug時會出現一個warning 不過結果是有正確地跑出來 > 看書上寫 好像是pow函數裡面的參數要用double型態表示(?!) > 於是我把 a[i][j]=(1+i)*pow(10 ,j); 改成 a[i][j]=(1+i)*pow(10.0 ,j); > 結果和上面的問題一樣 跑的出來可是也有warning > 後來把 int a[10][4]; 改成 double a[10][4];後 是沒warning了 > 可是最後數字全變成0 > 想請教各位這個warning到底是怎麼一回事? > 謝謝!!! 因為pow兩個引數都是double,回傳也是double,你把array a 改成double是對的 但你忘了改printf的 %d 成 %f 或不要小數位就 改成 %.f -- ︵︵ █▔◣ █▔█ █▔▔ █▔█ █▆▉ █ █▔█ █◣█ █▔ █◣︵︵ █ █ █▁◤ █▁▁ █▁█ ▉▉▉ █ █▁█ █◥█ █ █ 夢之大地 逼逼ㄟ四 █▁◤ █ █ █▁▁ █ █ ▉▉▉ █▁ █ █ █ █ █▁◤ ※ Origin: <bbs.ccns.ncku.edu.tw> ◆ From: 140.116.117.157
文章代碼(AID): #159fdX00 (Programming)
文章代碼(AID): #159fdX00 (Programming)