【问题标题】:How to pass float variable from one functions to other function.?如何将浮点变量从一个函数传递给另一个函数。?
【发布时间】:2015-04-18 09:42:29
【问题描述】:

我正在做一个程序,其中我必须在其他函数中使用局部变量。如果变量数据类型是 int,我可以做到这一点,但如果它是 float,那么它就不起作用。

我正在使用以下代码为 int 传递值:

int func1()
{
    float a = 2.34, b = 3.45, res1;
    int c = 2, d = 3, res2;
    res1 = a * b;
    res2 = c * d;
    return res2;
}

int func2(int res2)
{
    res2 = func1(res2);
    printf("%d", res2);
}

所以res2 存储int 值的结果,res1 存储float 值的结果。从上面的逻辑我能够传递res2(它是int)但不能传递res1(它是float)的值。我不知道我在哪里错过了重点。这该怎么做。请帮忙,谢谢!

【问题讨论】:

  • 这段代码有效吗?我真的很怀疑!!这没有给出任何错误吗??
  • 不是它适用于 int。 :)
  • func1() 不带任何参数,但你用参数func1(res2);调用它
  • 你使用什么编译器?如果编译成功,您需要启用(更多)警告。
  • func1(res) 是接收值的行

标签: c variables local


【解决方案1】:

函数的类型表示它返回什么类型的值

// func1 returns values of type int
int func1(void) {
    // return 3.14169; // automagically convert to 3
    // return "pi";    // error: cannot convert "pi" to a value of type int
    return 42;
}

如果你想让一个函数返回浮点类型的值,你需要用浮点类型定义它们

// func3 returns a floating point value of type double
double func3(void) {
    // return 3.14159 // return the value
    // return "pi";   // error: cannot convert "pi" to a value of type double
    return 42;        // converts the int value to the same value in type double
}

【讨论】:

  • 您的意思是float func3() 而不是double func3()
  • 我认为double(几乎)总是优于float。我的意思是任何浮点类型。但是对于示例,我使用了在没有更多信息的情况下可用的最佳类型。
  • @pmg 你的意思是说我应该使用double func1,那么只有它可以将float值传递给func2
  • @AbhinavRawat:如果您使用double func1() { /* ... */},它将永远不会返回int 类型的值...但请注意默认转换!
  • @pmg 它甚至没有返回浮点值。
猜你喜欢
  • 2023-02-08
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多