typedef struct{
int num, den;
} tfrac;
tfrac multf(tfrac a, tfrac b);
tfrac multf(tfrac a, tfrac b){
tfrac res;
res={a.num*b.num, a.den*b.den}; //The ERROR is here
return res;
}
该程序将分数相乘。我不知道为什么我的函数有错误。
答案 0 :(得分:0)
initializer是声明符的一部分。因此,您不能在一行上声明变量,然后在另一行上使用初始化程序为其赋值。相反:
tfrac res={a.num*b.num, a.den*b.den};
答案 1 :(得分:0)
您使用的语法在C语言中无效。您可以在赋值运算符的上下文中通过使用复合文字
来接近此语法。tfrac multf(tfrac a, tfrac b)
{
tfrac res;
res = (tfrac) { a.num * b.num, a.den * b.den };
return res;
}
请注意(tfrac)
之前的{}
部分。
但是在您的情况下,您可以简单地使用初始化代替赋值
tfrac multf(tfrac a, tfrac b)
{
tfrac res = { a.num * b.num, a.den * b.den };
return res;
}
但是,如果您愿意,可以再次返回复合文字,可以使用复合文字将整个内容转换为单一格式
tfrac multf(tfrac a, tfrac b)
{
return (tfrac) { a.num * b.num, a.den * b.den };
}