0

这应该返回结果 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

4 回答 4

6

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

float Funkcja(int a)
{
    float f = static_cast<float>(a);
    f += 1.5;
    return f;
}
于 2013-06-18T10:06:08.813 回答
2

您将结果分配回a,即int。不使用强制转换的结果。

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

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

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

于 2013-06-18T10:06:20.873 回答
1
   static_cast<float>(a);

a浮动。当它被解释时,它只a在该行作为一个浮点数。

float b = static_cast<float>(a);
b += 1.5;
return b;
于 2013-06-18T10:07:17.267 回答
1

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

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

于 2013-06-18T10:06:15.837 回答