看板Programming
标 题Re: [问题] pow的问题in C
发信站梦之大地 (Sat Oct 7 01:35:56 2006)
转信站ptt!ctu-reader!Spring!news.nctu!news.nsysu!news.mksh.phc!news.ccns.nck
※ 引述《[email protected] (一个人的行李)》之铭言:
> 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