2012-01-30 9 views
4

なぜこれはエラーですか?いつか時Obj Cブロックでの説明

float (^isFloat)(float) = ^(float d) 
{ 
    return d*2.0; 
}; 

、次は私が理解して助けてください、

float (^isFloat)(float) = ^(float d) 
{ 
    return d; 
}; 

エラーは無料です。

+2

どのようなエラーメッセージが報告されますか? –

答えて

9

最初のブロックの戻り値の型が正しくないためです。

ブロックを定義してfloatを返しましたが、floatにはdoubleを掛けました。 d * 2.0fに変更すると、すべて正常に動作するはずです。

+5

追加する:浮動小数点定数は、別段の指定がない限り倍です。 – Wevah

+0

美容。私たちが最後にfを加えなければならないことを知っていることはとても素晴らしいことです。どうもありがとう。 – Futur

+0

もう1つの質問:「d * 2.0f」と書かれているとき、それはコンパイラにとってどういう意味ですか?最終的にfとタイプキャストの種類? – Futur