【问题标题】:Pointer in a function "expected expression before = token"函数中的指针“= token 之前的预期表达式”
【发布时间】:2015-02-16 09:57:19
【问题描述】:

我尝试通过“简单地”计算一个圆来学习在函数中使用指针。我收到错误 expected expression before '=' token 但不明白为什么。之前说的预期表达..我不清楚,是什么样的?

#define PI = 3.1415f

void circle(float *wert) {

    *wert = ( (*wert) * (*wert) * PI );

}

int main(void) {

    float radius;

    printf("radius input: ");
    scanf("%f", &radius);    
    circle(&radius);
    printf("the circle size will be: %f", &radius);

}

【问题讨论】:

  • &radius in printf 应该是 radius
  • 谢谢,#define PI = 3.1415f 应该是#define PI 3.1415f without =
  • 如果你包含了math.h,你会发现PI已经是pre#defined。
  • 但我什至无法理解错误输出,错误出现在第 12 行,我使用数学,但 pi 定义较早,第 12 行 PI 不在 = 符号之前。

标签: c pointers c-preprocessor


【解决方案1】:
#define PI = 3.1415f

应该是

#define PI 3.1415f

宏 PI 在代码中使用时被 3.1415 替换

【讨论】:

  • 它编译没有错误,但半径为 5 的圆不是 0.0000。但这就是输出。你知道为什么吗?
  • @muni,将printf 中的&radius 更改为radius
  • @muni &var 给出变量的地址,如果你想要这个值,只需使用变量名
  • 哦,天哪,我就是那个愚蠢的 xD,你在半小时前就向我解释了!我想这就是我明确处理地址的情况。
【解决方案2】:
#define PI = 3.1415f

这里不应该有=。换成

#define PI (3.1415f)

【讨论】:

  • 它编译没有错误,但半径为 5 的圆不是 0.0000。但这就是输出。你知道为什么吗?
  • 虽然使用括号来保护宏不会受到伤害,但我看不出在简单的浮点数情况下可以解决哪些词汇歧义。如果你能提供一个省略它们会导致问题的例子,我会很感兴趣,因为我个人从来没有在这样的常量中使用过括号。
  • @SirDarius 不,我没有这样的例子。这只是习惯问题。
猜你喜欢
  • 2012-04-22
  • 1970-01-01
  • 1970-01-01
  • 2016-07-26
  • 1970-01-01
  • 2019-10-28
  • 2014-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多