嘿,我是这里的新人:D(我知道这与问题有任何关系) 每次我尝试构建我的代码这个错误apear: 无效的操作数到二进制+(有'浮动*'和'浮动*') 这是我的代码
void verser() {
int j,i;
long n,m;
float *s;
printf("saisir ton num de compte");
scanf("%d",&n);
printf("saisir num de compte desti");
scanf("%d",&m);
printf("saisir la valeur a verser");
scanf("%i",&s);
*s/=4.0;
for (i=0; i<c; i++)
{ for (j=0; j<c; j++)
{ if (comp[i].num_compte==&n)
{ if (comp[j].num_compte==&m)
{ if(comp[n].solde>s) {
comp[i].solde-=s;
comp[j].solde+=s;
}
}
}
}
}
}
伙计们抱歉,我会在这里添加这可能会有所不同......
typedef struct {
char *nom;
char *prenom;
long *num_compte;
float *solde;
}compte;
compte comp[50];
int c=0;
答案 0 :(得分:1)
变量s是指向float的指针。这不是浮动。要获得指向的值,您需要使用* s,如下所示:comp [j] .solde + = * s;
答案 1 :(得分:1)
您尝试添加指向浮点数的指针。
然而,在这种情况下,声明是错误的,它应该是&#34; float s;&#34;而不是&#34; float * s;&#34;另外,正确&#34; * s / = 4.0;&#34; to&#34; s / = 4.0;&#34;。
答案 2 :(得分:1)
在您的代码中,您有
float *s;
scanf("%i",&s);
然后尝试
*s/=4.0;
你可能会得到一个SIGSEGV,因为你要将用户给出的地址分配给s
,这几乎肯定会导致分段错误。
另外,你正在尝试
comp[j].solde+=s;
和s
是一个指针,所以你试图将s
的地址添加到它(不知道你为什么这样做)。
所以,我建议你从指向普通浮点数的指针中改变s
float s;