2012-09-28 16 views
8

私は私のプログラムでfloat変数を初期化するとき、私は一般的のようなベクトルがあります。フロートを0.fで初期化する必要がありますか?

Vector forward(0.f,0.f,-1.f),right(1.f,0.f,0.f),up(0.f,1.f,0.f) 

(ベクターはstruct Vector{ float x,y,z; };のようなわずか3山車です)

をこれは、など読みやすいくらいに見えます

Vector forward(0,0,-1),right(1,0,0),up(0,1,0) 

float変数をfloatで初期化する必要がありますか? floatを初期化するために整数(またはdouble秒)を使用すると、何かを失うか何らかのペナルティが発生しますか?

+0

stl :: vectorと混同しやすいので、実際にVectorを構造体名として使用するべきではありません。代わりにvector3fやvector3dのような名前をつけることもできます – SinisterMJ

+0

FORTRANでは適切な割り当てを使用する必要があります。したがって、ゼロの倍精度は0.0e0または0.0e0ではなく0.0d0でなければなりません。FORTRANで始まる多くの人々はこの動作によって焼き付けられ、明示的に0.fをC++コードに入れます。対照的に、C++は、実際にはリテラル0または1を適切な浮動小数点値にする方法を指定します。 –

+0

私は初期化が問題ではないと思います。しかし、比較した場合、より大きなデータ型が使用され(0.0に対して0.0f)、ゆっくりとする傾向があります。明らかにユースケースに依存しますが、正しいタイプを使用していない場合、あなたは間違いなく変換を行っています。コンパイル時または実行時。これを避けると時間が節約されます。 – stefan

答えて

関連する問題