【问题标题】:Invalid type argument of unary '*' (have int?一元'*'的无效类型参数(有int?
【发布时间】:2011-12-07 18:19:23
【问题描述】:

我已经阅读过其他类似的问题,但似乎没有一个有效...... 我的代码是:

int flowRateFormula(int pipeDiameter,double velocity)
{
int integer3;

integer3=PI*(1/4)*(pow(pipeDiameter,2))*velocity;

return integer3;

 }

错误是:

flowRate.c: In function ‘flowRateFormula’:
flowRate.c:38:13: error: invalid type argument of unary ‘*’ (have ‘int’)

怎么办? BTW PI 已定义

【问题讨论】:

  • 是否定义了 PI?我打赌它是空的。顺便说一句,(1/4) 会给你零,使你的整个表达为零。
  • 整数除法:1/4... 改成1.0/4.0
  • @FredLarson:我认为你是对的,如果定义了 PI,它对我来说编译得很好。
  • (不相关):将(1/4) 替换为0.25(1/4.0)
  • 你在这里混合类型,pow 返回双倍。 (1/4) int type == 0。您可能希望使用双精度数进行所有计算。

标签: c int unary-operator


【解决方案1】:

很可能你有这条线

#define PI

某处,这会导致您的代码等同于:

integer3=*(1/4)*....

这无法编译。用例如替换它

#define PI 3.1416

还要注意(1/4) 将被评估为0,因为整数除法返回一个整数。你可能想使用1.0/4.0

【讨论】:

  • 更好地替换为#define PI (3.1416)
  • @buddhabrot:这通常是一种很好的做法,但我认为这并不重要,因为它只包含一个数字,因此运算符优先级不会成为问题。
【解决方案2】:

您需要先声明 PI 的值。

【讨论】:

    【解决方案3】:

    是否定义了 PI?我打赌它是空的。顺便说一句,(1/4)会给你零,使你的整个表达为零。

    【讨论】:

      猜你喜欢
      • 2021-10-15
      • 2011-12-10
      • 1970-01-01
      • 1970-01-01
      • 2018-01-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多