求助各位大佬,我写的C++出了个bug:
typedef
struct{
int L,d;
double q;
int IO,JO;
double S,H;
}Segment;
//管段的结构体
Segment Se[M];
typedef
struct{
double F;
double R;
double DQ;
}Cylinder;
//环的结构体
Cylinder Cy[N];
这是我定义的两个结构体,并且后续有处理,将Cylinder中的F、R、DQ都赋值为0。
void
calcuLate(Segment *ps,Cylinder *pc,
int n,
int m){
int i=
0;
for(i=
0;i<m;i++)
(ps+i)->
S=
10.293*T*T*(ps+i)->
L/(
pow((ps+i)->
d/
1000,
5.33));
这是我的一个函数以及函数中的部分代码,其中T是常熟已经#define了。
出现的问题是,就按照这样来执行,调试时检查S最初为0,一旦执行这个for循环,S就变成了inf。
但是我把这个for里面稍微改一下,改成这样子
for(i=
0;i<m;i++){
int tempL=(ps+i)->
L;
double tempd=(ps+i)->
d;
(ps+i)->
S=
10.293*T*T*tempL/(
pow(tempd/
1000,
5.33));
}
然后输出就正常了。
所以是因为指针不能这么用还是说我的表达式有哪里不对呢?(因为代码中有挺多都用了前面那种表达的,如果都要改起来很麻烦。而且感觉第二种方式挺浪费空间的。)求各位大佬帮助!