c语言计算问题

claire_zhaoj 2012-03-29 09:27:41
程序部分代码如下;

if(s[k]<150*150)
{
XX[t]=x[k];
YY[t]=y[k];
ZZ[t]=z[k];
temp=((X[1]-XX[t])*(X[1]-XX[t])+(Y[1]-YY[t])*(Y[1]-YY[t]));
p[t]=1/((X[1]-XX[t])*(X[1]-XX[t])+(Y[1]-YY[t])*(Y[1]-YY[t])); t++;
printf("%d\n",p[t]);
}

其中temp计算值为18778时,为什么p显示值为-858993460,这里的p不就是temp的倒数吗???这是哪里出错了?
...全文
77 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
claire_zhaoj 2012-03-29
  • 打赏
  • 举报
回复
找到错误原因了,谢谢啦,之后的语句顺序反了,结贴

[Quote=引用 3 楼 的回复:]
C/C++ code

printf("%lf\n",p[t]);//double就要用lf打印
[/Quote]
claire_zhaoj 2012-03-29
  • 打赏
  • 举报
回复
改后结果还是一个很怪异的数= =
[Quote=引用 3 楼 的回复:]
C/C++ code

printf("%lf\n",p[t]);//double就要用lf打印
[/Quote]
面包大师 2012-03-29
  • 打赏
  • 举报
回复
printf("%lf\n",p[t]);//double就要用lf打印
claire_zhaoj 2012-03-29
  • 打赏
  • 举报
回复
我用的是double,改完之后还是现实错误,是一个-92559631349。。。特别小的一个数,计算还是不正确啊

[Quote=引用 1 楼 的回复:]
首先p这个数组要是double或float类型的,再次,要该成下面的

C/C++ code

p[t]=1.0/((X[1]-XX[t])*(X[1]-XX[t])+(Y[1]-YY[t])*(Y[1]-YY[t])); t++;
print……
[/Quote]
面包大师 2012-03-29
  • 打赏
  • 举报
回复
首先p这个数组要是double或float类型的,再次,要该成下面的
                    p[t]=1.0/((X[1]-XX[t])*(X[1]-XX[t])+(Y[1]-YY[t])*(Y[1]-YY[t]));                                  t++;
printf("%f\n",p[t]);

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧