这个回复结果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();
}
答案 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;