标记“ {”之前的预期表达式错误

时间:2018-12-07 23:24:14

标签: c

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;
}

该程序将分数相乘。我不知道为什么我的函数有错误。

2 个答案:

答案 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 };
}
相关问题