Re: [問題] pow的問題in C
※ 引述《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
討論串 (同標題文章)
完整討論串 (本文為第 3 之 4 篇):
1
1
Programming 近期熱門文章
PTT數位生活區 即時熱門文章