错误的函数值返回

时间:2013-06-18 10:04:46

标签: c++

这个回复结果21.5但是这个错误的返回21请帮助我。

#include <iostream>
#include <string>
#include <conio.h>
using namespace std;

float Funkcja(int a)
{
    static_cast<float>(a);
    a += 1.5;
    return a;
}
void main()
{
    float(*pWskazn)(int);
    pWskazn = &Funkcja;
    cout << (pWskazn)(20);
    getch();
}

4 个答案:

答案 0 :(得分:6)

您的演员表无效,您需要将其存储在变量中。

float Funkcja(int a)
{
    float f = static_cast<float>(a);
    f += 1.5;
    return f;
}

答案 1 :(得分:2)

您要将结果分配回a,即int。不使用演员表的结果。

以下是修复此功能的方法:

float Funkcja(int a)
{
    return static_cast<float>(a) + 1.5;
}

演员表是一个表达,而不是声明。执行static_cast<float>(a)时,编译器会计算强制转换的值,您可以在进一步的计算中使用它,但变量本身保持不变。

答案 2 :(得分:1)

static_cast<float>(a)不会将a的类型更改为浮动。它将a保持的值转换为float。如在代码段中使用的那样,它会丢弃该值,因为它没有被使用。

static_cast<float>(a) + 1.5会做你想做的事。

答案 3 :(得分:1)

   static_cast<float>(a);

不会使a成为浮点数。在解释时,它只会使a成为该行的浮点数。

float b = static_cast<float>(a);
b += 1.5;
return b;