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の型を floatに変更しません。a保持する値を floatに変換します。コード スニペットで使用されているように、値は使用されていないため破棄されます。

static_cast<float>(a) + 1.5あなたが望むことをします。

于 2013-06-18T10:06:15.837 に答える